
操作系统
Nemo丶
我见青山多妩媚,料青山见我应如是。
展开
-
进程概念
进程概念: 进程就是正在运行的程序。 操作系统对进程管理时,对进程的描述就是**PCB**(Process Control Block 进程块控制)。原创 2018-11-10 21:08:58 · 275 阅读 · 0 评论 -
五种IO模型
IOIO:数据的读取或写入操作。通过完整的IO分两个阶段: 用户进程空间到内核空间的转换; 内核空间到设备空间的转换。因为在Linux系统下,进程无法直接操作IO设备,必须通过内核协助。除此之外内核为每个IO设备提供缓冲区,以提高IO效率。任何的IO都分为两个步骤:等和数据拷贝。即等待用户进程请求数据到达内核空间,从内核空间将数据拷贝到用户进程空间。五种IO模型: 同步IO:...原创 2019-07-14 17:19:39 · 213 阅读 · 0 评论 -
进程信号
目录 信号 信号产生 信号注册 信号阻塞(屏蔽) 信号处理 信号注销信号信号实质是软中断,用于通知进程发生某些事件。 信号作用:通知事件的发生,信号产生之后第一时间也不是直接处理,而是先存储下来,再处理信号。 信号生命周期:信号的产生 ---> 信号的注册 --->...原创 2019-05-30 00:21:08 · 276 阅读 · 0 评论 -
进程间通信:共享内存
共享内存:特点: 最快的IPC。 原理: 因为共享内存是直接将一块物理内存映射到虚拟地址空间中,不同的进程都能访问共享区的内存区域,因此进行数据传输时候相较于其他通信方式,少了两步用户态与内核态数据拷贝过程,因此共享内存是最快通信方式。读写特性:进程对共享内存大都是读操作,很少是写操作; 进程在执行写操作时,其他程序既不能读也不能写。(独占式的写)...原创 2019-05-17 22:31:51 · 391 阅读 · 0 评论 -
作业/进程调度算法
首先了解什么是调度?调度实质是一种资源分配,调度程序从内存中选择一个可执行的进程,为之分配CPU。调度的层次?作业从进入系统到后备队列,再从运行到结束退出系统为止,期间经过不同级别的调度:高级调度 高级调度又长程调度或作业调度。是将在外存上处于后备队列中的作业调入内存,为其创建进程、分配资源、放入就绪队列。(外存 ---> 内存)中级调度 ...原创 2019-05-25 16:51:34 · 829 阅读 · 0 评论 -
进程间通信:管道
进程间通信(InterProcessComnuication) 进程间通信:不同进程间传播交换信息。进程间为什么要沟通交流?因为进程的独立性,而在实际工作中往往会出现在一个系统中好几个进程协同工作,那么这进程就需要交流沟通完成协作。也因为进程的独立性,因此进程间的沟通交流将变得困难,复杂。因此就产生了各种进程间通信方式,来解决如何进行进程间通信的问题。进程间通信的目的:...原创 2019-05-16 19:22:23 · 440 阅读 · 0 评论 -
进程控制
进程创建 以父进程为模板创建子进程,复制父进程的pcb大部分数据(共用代码段,数据独有,有自己的虚拟地址空间)。 fork实现: 在fork()函数执行结束之后,其返回值是存放在eax寄存器中的,在子进程中fork()的结尾处,置0。造成子进程也执行一次fork()的假象。#include <unistd.h>pid_t fork(v...原创 2019-05-15 23:41:53 · 1327 阅读 · 0 评论 -
链接和编译
在开始学习C语言编程时,我们所写的第一份代码应该就是:#include <stdio.h>int main(){ // 打印 printf("Hello World! \n"); return 0;}最初我们只能知道这段代码执行结果是打印一句: Hello World!但背后具体运行过程是怎样的呢? 通过学习,本篇尝试对...原创 2019-05-14 20:25:19 · 280 阅读 · 0 评论 -
进程间通信:消息队列
消息队列 消息队列特点:是一个全双工通信,可读可写; 具有入口和出口,消息的传输是先入先出的,是以队列形式存储;(与管道相似) 发送的是一个带有类型的数据块。<创建在内核中>(区别于管道字节流传输) 每个消息的最大长度是有上限的(MSGMAX), 每个消息队列的总的字节数是有上限的(MSGMNB), 系统上消息队列的总数也有上限(MSGMNI)。 ...原创 2019-05-18 23:03:36 · 532 阅读 · 0 评论 -
线程学习(三)
生产者与消费者模型: 生产者抓取数据,将数据放到缓存区中,消费者从缓冲区拿到数据进行处理。 消费者为什么不直接获取数据,而要经过生产者? 提高效率,数据安全程度提高。 特性:一个场所: 存放资源场所两类角色: 生产者,消费者三种关系:(保证资源安全访问) 生产者与生产者 ----> 互斥 消费者与消费者 ----> 互斥...原创 2019-03-05 17:33:49 · 219 阅读 · 0 评论 -
线程学习(一)
线程概念: 通常来说,线程是一个程序的一条执行流,更准确来讲是一个进程内部的控制序列。在Linux下线程是用PCB模拟的,线程也被称作轻量级进程,因此Linux下的线程是CPU调度的基本单位(与传统系统相比Linux下没有真正的线程)。由于线程是在进程内部运行的执行流,所有线程共享进程资源。线程优缺点: 优点: ...原创 2019-02-25 18:59:54 · 374 阅读 · 0 评论 -
线程学习(二)
线程安全:为什么有线程安全,而进程没有? 因为进程是独立的,所以进程间不会相互影响,...原创 2019-02-28 23:54:14 · 197 阅读 · 0 评论 -
堆区内存分配
通常我们在动态开辟内存时,会使用malloc函数在堆区开辟空间。#include <stdlib.h>void *malloc(size_t size);// 成功返回已开辟空间的地址,否则返回NULL堆区如图堆区在未初始化的数据区(.bss)之后的开始,用于程序员动态开辟释放的数据区。为了减少内存碎片、降低系统调用开销,系统会为堆区分配一大块内存,将堆区分为多个不...原创 2019-07-17 17:49:13 · 2719 阅读 · 0 评论