
操作系统
文章平均质量分 96
在linux下完成的操作系统学习
_ 菜 -∞
星光不问赶路人,时光不负有心人
展开
-
这就是守护进程嘛
守护进程的原理,进程组和会话,以及单实例的守护进程如何创建原创 2021-04-05 19:08:45 · 423 阅读 · 0 评论 -
关于Nginx的产生,用途,socket编程验证,加权轮询算法
关于Nginx的产生,用处,启动的方式,并用socket编写简单的服务端程序进行验证,简述加权轮询算法的过程原创 2021-02-24 22:49:40 · 1363 阅读 · 2 评论 -
磁盘调度算法模拟
操作系统实验,磁盘调度算法模拟原创 2020-12-27 14:44:38 · 941 阅读 · 0 评论 -
虚拟内存页面置换算法
操作系统实验,虚拟内存的页面置换算法。原创 2020-12-27 14:33:54 · 3197 阅读 · 2 评论 -
死锁预防之银行家算法
具体说明银行家算法的原理,以及银行家算法的精髓所在,对实现的数据结构进行描述,利用程序实现对事中的用户指定资源的分配来模拟银行家算法的执行过程,加深对算法的理解原创 2020-11-29 21:22:30 · 5664 阅读 · 12 评论 -
多路转接之poll与epoll
poll与epollpoll函数接口编程实例epoll函数接口poll相比于select函数,poll的跨平台移植性不如select,因为poll函数只能在linux环境中使用,也是采用轮询遍历的方式。与select函数的不同之处:poll不会限制文件描述符的个数文件描述符对应一个事件结构,这个结构中有两个事件,一个是要监控的文件描述符,另一个是这个文件描述符所对应的事件函数接口#include <poll.h>int poll(struct pollfd *fds, nf原创 2020-06-20 21:32:11 · 412 阅读 · 0 评论 -
linux --- 常见的IO模型与fcnl和select函数说明
IO操作中常见的五个模型(阻塞IO,非阻塞IO,异步IO,信号驱动IO,IO多路转接),与fcnl函数和select函数的说明和验证原创 2020-06-16 17:56:49 · 665 阅读 · 0 评论 -
linux --- 读写锁(C++模拟实现)
读写锁适用场景读写锁的三种状态加锁规则操作接口完整程序在多线程中有这么一种情况,就是有着少量的写,但是却存在频繁的读取数据。这种情况如果采取互斥锁那种方式解决的话,就会显得有点降低程序的效率这时就可以使用读写锁来完成适用场景少量写 + 大量的读特点用于不同的读取线程,可以获取读模式下的读写锁而并行的运行。读写锁的三种状态读模式下加锁写模式下加锁不加锁加锁规则写...原创 2020-05-06 22:58:14 · 1030 阅读 · 0 评论 -
C++模拟实现线程池模型
线程池应用场景示例线程池是一种多线程的处理模式,在处理的过程中将任务添加到队列中,在创建线程后启动这些任务。我们知道,生产一个线程的开销比一个进程要小的多,线程的销毁也比进程方便。但是我们在调用多线程的时候,不同线程之间抢占式执行CPU资源的时候,会有一个时间片的问题。当一个线程在CPU时间片到了的时候,就需要让出CPU资源,这时会通过共享区中的程序计数器和上下文信息来保存当前的状态,等到下...原创 2020-04-20 21:29:09 · 837 阅读 · 0 评论 -
C++实现生产者消费者队列
C++实现生产者消费者队列分析程序队列的类生产者逻辑消费者逻辑主函数结果分析源码地址分析首先,我们的生产者与消费者队列需要满足同步与互斥关系,就需要一把互斥锁,以及生产者与消费者各自的条件变量。其次,我们可以利用C++中STL里的queue队列来进行实现,但是我们需要对push,pop进行修改,因为STL库的函数不一定能满足互斥条件。也就是不一定安全。最后,所有资源在程序结束后一定要记得释...原创 2020-04-18 18:43:46 · 2926 阅读 · 1 评论 -
基于Posix信号量实现的环形生产者消费者模型
基于Posix信号量实现的环形生产者消费者模型posix信号量操作接口定义初始化接口等待接口唤醒接口销毁接口如何保证同步&互斥基于Posix信号量实现的环形生产者消费者模型使用的数据结构实现操作代码实现环形队列类消费者线程执行的逻辑生产者线程执行的逻辑主函数运行结果posix信号量作用可以完成线程间与进程间的同步与互斥本质资源计数器 + PCB等待队列 + 提供等待和唤醒...原创 2020-04-18 18:26:17 · 529 阅读 · 0 评论 -
生产者和消费者(linux)
生产者和消费者同步条件变量条件变量的接口简单实现一个生产者和一个消费者的模型同步同步保证了每个执行流可以合理的访问每个临界资源同步的作用当存在临界资源的时候,就直接获取临界资源;没有资源的时候,进行线程等待,等待其他线程让出临界资源,然后再通知等待线程。等待线程之间再进行抢占式执行。条件变量当一个线程互斥的访问一个变量的时候,可能会出现在其他线程改变状态之前,他自己只能进行等待状...原创 2020-04-12 22:12:37 · 1120 阅读 · 0 评论 -
互斥锁与死锁(linux多线程)
linux-线程安全线程安全再次了解下原子性之前我们了解到一些线程的基本知识,线程等待,线程分离啊什么的。现在我们用这些知识简单实现一个火车站抢票的功能。假设一共有100张票,我们开放4个窗口(线程),让每个窗口进行卖票的功能,每个窗口之间是独立的,他们的任务就是卖完这100张票,每卖一张票,就让总票数-1。void* ThreadStart(void* arg){ (void*)a...原创 2020-04-10 19:39:47 · 2667 阅读 · 0 评论 -
多线程(linux)
linux -多线程竞态条件volatile关键字多线程从内核的角度分析线程竞态条件竞态条件是指多个执行流访问同一个资源的情况下,会对程序产生一个二义性的结果。重入: 多个执行流可以访问到同一个资源#include <stdio.h>#include <signal.h>#include <unistd.h>int count = 0;vo...原创 2020-04-04 16:51:46 · 294 阅读 · 0 评论 -
进程信号(linux下信号的注册,捕捉,阻塞)
进程信号信号量(system v信号量)信号的基本概念信号的产生信号的注册两种注册信号的情况信号捕捉信号量(system v信号量)作用:实现进程控制,也就是可以实现同步和互斥功能本质:计数器 + PCB等待队列。计数器是指对资源的计数,也就是对所占的资源进行+1,-1操作实现互斥的方法前提条件:信号量当中的资源计数器只有两个取值,也就是0或者1。其中0表示当前资源不可用,1表...原创 2020-03-24 18:50:14 · 1822 阅读 · 0 评论 -
进程间通信(linux)
进程间通信进程间通信管道匿名管道文件描述符阻塞的情况下文件描述符属性的设置数据的原子性进程间通信目的:每一个进程都有自己独立的虚拟地址空间和页表结构,这使得进程与进程之间相互独立,导致了进程和进程之间很难相互协作工作的问题,为了解决这种问题,进程与进程之间就需要沟通一下,也就是进程间通信。进程间通信种类的细分:数据传输,数据共享,进程控制管道匿名管道ps aux | // | 就...原创 2020-03-17 22:22:01 · 458 阅读 · 0 评论 -
计算机系统概述
文章目录基本构成处理器寄存器指令的执行取指令和执行指令基本构成我们所熟知的计算机,其内部由处理器,存储器和输入输出部件组成,每类部件有一个或者多个模块。这些部件以某种方式互联,从而实现计算机执行程序的主要功能。处理器(Processor):它控制着计算机的操作,执行数据处理功能。当只有一个处理器时,称为中央处理器(CPU)。存储器(Memorizer):顾名思义就是存储数据和程序,一般分...原创 2020-03-10 12:07:39 · 917 阅读 · 0 评论 -
基本文件操作(linux)
文章目录文件操作系统调用的文件操作文件描述符文件流指针与文件描述符的关系重定向动态库和静态库文件操作FILE *fopen(const char *path, const char *mode);FILE:返回值是文件流指针类型path:需要打开文件的路径,可以是绝对路径,也可以是相对路径(相对与当前目录的路径)mode:r: 以读方式打开,如果当前文件不存在,则会报错r+: ...原创 2020-03-06 20:27:01 · 291 阅读 · 0 评论 -
进程控制(linux)
文章目录进程优先级进程创建进程终止进程等待获取子进程status进程程序替换模拟实现xshell守护进程分布式进程优先级进程优先权是cpu分配资源的先后顺序,优先权高的进程有优先执行的权利。进程优先级是为了保证操作系统比较合理的调度进程。进程有限级的查看可以先在xshell的第一个界面写一个死循环,让他一直运行,然后重新开一个xshell,输入(process_status 是正在执行的...原创 2020-03-01 18:35:13 · 326 阅读 · 0 评论 -
进程概念(linux)
1.冯诺依曼体系 体系的构成 :运算器,存储器(RAM 和 ROM),控制器,输入设备,输出设备 思想 : 1.数据和程序是以二进制代码的形式放在存储器中,存放的位置由地址指定,地址码也是二进制的。 2.控制器是根据存放在存储器中的指令序列即程序来工作的,并由一个程序计数器(指令地址计数器)控制指令执行。控制器具有判断能力,能根据计算结果选择不同的动作流程。注意: a 这里...原创 2020-01-06 19:22:03 · 1282 阅读 · 0 评论 -
vim 和 gcc 的使用
Linux-编辑器 vim的使用vim 的三种模式: 1.普通模式(命令/正常模式)(用vim 初次打开的默认模式) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 2.插入模式 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。 ...原创 2019-12-21 16:36:38 · 3340 阅读 · 0 评论 -
linux(Centos)基础指令
Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统, 它包括GUI组件和许多其他实用工具。其版本主要有Centos,Deepin,Ubunt...原创 2019-12-01 11:05:10 · 1221 阅读 · 0 评论