操作系统
zpznba
日日行,不怕千万里。常常做,不怕千万事。
展开
-
用户空间与内核空间,进程上下文与中断上下文[总结]
转自:http://www.cnblogs.com/Anker/p/3269106.html1、前言 最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下文。看着很熟悉,半天又说不出到底是怎么回事,有什么区别。看书过程经常被感觉欺骗,似懂非懂的感觉,很是不爽,今天好好结合书和网上的资料总结一下,加深理解。2、用户空间与内核空间 我们知道现在...转载 2019-03-14 11:27:23 · 264 阅读 · 0 评论 -
malloc原理和内存分配
当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:1、检查要访问的虚拟地址是否合法2、查找/分配一个物理页3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)4、建立映射关系(虚拟地址到物理地址)重新执行发生缺页中断的那条指令如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。内存分配的原理从操作系统角度来看,进程分配内存有...转载 2019-05-22 15:45:17 · 1389 阅读 · 0 评论 -
我是一个线程(对理解多线程很有帮助)
我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”我一脸懵懂,“包裹,什么包裹?”“不要着急,马上你就会明白了,我们这里是不养闲人的。”果然,没多久,屋子的门开了,...转载 2019-04-24 10:13:26 · 145 阅读 · 0 评论 -
一个Fork的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?#include <stdio.h>#include <sys/types.h>#include <unistd.h> int main...转载 2019-04-09 10:34:46 · 140 阅读 · 0 评论 -
进程挂起
进程挂起状态是指该进程的进程映像在磁盘上,目的是减少进程占用内存。1.挂起: 把进程从内存转向外存等待 -> 等待挂起 就绪 -> 就绪挂起 运行 -> 就绪挂起2. 激活:从外存到内存就绪挂起 -> 就绪 等待挂起 -> 等待七状态模型图:进程状态队列图:...原创 2019-03-18 17:19:55 · 6029 阅读 · 1 评论 -
进程与线程
1.引入线程的背景我们知道进程的两个基本属性:进程是一个拥有资源的独立单元;进程同时又是一个可以被处理器独立调度和分配的单元。总的来说,为了使多个程序更好地并发执行,并尽量减少操作系统的开销,操作系统设计者引入了线程,让线程去完成第二个基本属性的任务,而进程只完成第一个基本属性的任务。事实上,进程控制块就是为了让各个进程之间能够给很好的隔离。但是有的场景下,多进程的隔离性设...原创 2019-03-12 18:40:16 · 123 阅读 · 0 评论 -
进程的组成和描述
进程的组成从上图的次序可以看出:进程 = 程序 + 数据 + 动态执行进程的描述操作系统为了管理进程和资源,必须掌握关于每个进程和资源当前状态的信息。普遍使用的方法是:操作系统构造并维护它所管理的每个实体的信息表:内存表用于跟踪内(实)存和外存(虚拟内存)使用进程映像来描述一个进程,进程镜像包括:程序、数据、栈和进程控制块(属性的集合):下图为一个典型的进程映像...原创 2019-03-11 17:38:54 · 929 阅读 · 0 评论 -
进程的等待和退出
等待和退出实际上是父子进程之间的一种交互,完成子进程的资源回收。进程等待wait()系统调用可以用于父进程等待子进程的结束:关于wait()的实现,实际上是把进程的状态改为 sleep;子进程结束时通过exit()向父进程返回一个值; 父进程通过wait()接受并处理返回值。那么这两者谁先发生呢?先后顺序有什么影响?1. 当有子进程存活时,父进程进入等待状态,等待子...原创 2019-03-19 15:55:05 · 658 阅读 · 0 评论 -
进程创建
fork()用fork()系统调用创建(复制)一个继承的子进程复制父进程所有的变量和内存; 复制父进程的所有CPU寄存器(有一个寄存器除外,记录不同进程ID) 子进程的fork()会返回0,父进程的返回进程标识符,子进程可以使用getpid()来获取pid;示例如下:int pid == fork();//创建子进程if(pid == 0){ //子进程运行区域...原创 2019-03-19 15:19:31 · 180 阅读 · 0 评论 -
操作系统实现IO的三种方式
IO设备是除CPU和存储器之外的另一大需要操作系统管理的资源,它和操作系统有密切的联系。IO设备一般包括:设备控制器和设备本身。设备控制器是插在电路板上的一块芯片或一组芯片,由这块电路板物理地控制设备。它从操作系统接受命令,例如,从设备读数据,并且完成数据的处理。每一类设备控制器都是不同的,所以需要不同的软件进行控制。这些专门用来和设备控制器对话,发出命令并接受响应的软件,成为设备驱动程序...原创 2019-03-09 22:33:29 · 5253 阅读 · 1 评论 -
操作系统的中断、异常和系统调用
在下列事件中,进程可能把控制权交给操作系统:- 系统调用:应用程序主动向操作系统发出的服务请求 - 异常:非法指令或者其他原因导致当前指令执行失败后的处理请求(软中断) - 中断:来自硬件设备的处理请求 1.为什么需要中断、异常和系统调用在计算机系统中,内核是被信任的第三方,可以在里面做对计算机系统里的任何内容的控制,而且可以执行它的特权指令。这种信任并不是指内核和外界隔...原创 2019-03-09 21:42:41 · 624 阅读 · 0 评论 -
操作系统基础复习
一、基本特征1. 并发并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。操作系统通过引入进程和线程,使得程序能够并发运行。2. 共享共享是指系统中的资源可以被多个并发进程共同使用。有两种共享方式:互斥共享和同时共享。互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个...原创 2019-03-09 21:42:11 · 203 阅读 · 0 评论 -
标准c库函数与Linux下系统函数库 区别 (有无缓冲区引起的效率变化)
我们都知道,C语言在UNIX/Linux系统下有一套系统调用(系统函数),比如文件操作open()、close()、write()、read()等,而标准C语言的库函数中也有一套对文件的操作函数fopen()、fclose()、fwrite()、fread()等.。那么同样是对文件的操作函数,标C与UC有什么区别呢?是标C效率高还是UC效率高呢?今天就让我们来一探究竟。程序作用:将0~9999...转载 2019-06-30 20:27:39 · 1174 阅读 · 0 评论