UNIX内核概述
hanzy0823
这个作者很懒,什么都没留下…
展开
-
linux内核——进程通信
unix系统提供的进程通信的基本机制:管道和FIFO:最适合在进程之间实现生产者和消费者的交互。有些进程想管道中写数据,而另外一些进程从管道中读数据。信号量:资源控制的一种方式消息:允许进程在预定义消息队列中读和写来交换消息。Linux内核提供两种不同的消息版本System V IPC 消息和POSIX消息一节。共享内存区:允许进程通过共享内存来交换信息,在必须共享大量数据的时候,原创 2013-10-03 23:44:06 · 1197 阅读 · 0 评论 -
UNIX内核概述-进程实现
为了让内核管理进程,每个进程由一个进程描述符表示,这个描述符包含有关进程当前状态信息。当内核暂停一个进程执行时(上下文切换),就把几个相关处理器寄存器的内容保存在进程描述符中。这些寄存器包括:程序计数器PC通用寄存器浮点寄存器包含cpu状态信息的处理器控制寄存器用来跟踪进程对RAM访问的内存管理寄存器当内核决定恢复执行一个进程时,它用进程描述符的字段来装载CPU寄存器。原创 2013-09-27 23:28:38 · 621 阅读 · 0 评论 -
UNIX内核概述-进程地址空间
每个进程运行在它的私有地址空间。在用户态下运行的进程涉及到私有栈、数据区和代码区。在内核态运行时,进程访问内核的数据区和代码区,单使用另外的私有栈。因为内核是可重入的,因此几个内核控制路径交叉的执行,在这种情况下,每个内核控制路径都有自己的内核栈。尽管看起来每个进程访问一个私有地址空间,但有时进程之间也共享部分地址空间。在一些情况下,这种共享由进程显示的提出;在另一种情况下,有内核自动完成原创 2013-09-28 09:32:36 · 962 阅读 · 0 评论 -
uniX内核概述-可重入内核
所有的unix内核都是可重入的,这意味着若干个进程可以同时在内核态下执行。在单处理器系统上只有一个进程真正执行,但是有许多进程可能在等待cpu或某一个I/O操作完成时在内核态下被阻塞。例如,当内核代表某一进程发出一个读磁盘的请求后,就让磁盘控制器处理这个请求,并恢复执行其他进程。当设备满足了读请求时,有一个中断就会通知内核,从而恢复以前的进程。提供可重入内核的一种方式就是编写函数,以便这些函数原创 2013-09-28 00:14:50 · 1014 阅读 · 0 评论 -
unix内核概述-同步和临界区
同步和临界区:实现可重入内核需要同步机制:如果内核控制路径对某个内核数据结构操作时被挂起,那么其他内核控制路径就不应该再对此数据结构操作,除非它已经设为一致性状态。否则两个控制路径交互执行将破坏所存储的信息。一般来说对全局变量的访问通过原子操作来保证。非抢占式内核:这与unix是具有抢占式进程的多处理操作系统并不矛盾。当进程在内核态执行时,他不能被任意挂起,也不能被另一个进程代替。因此原创 2013-09-28 10:43:18 · 1023 阅读 · 0 评论 -
unix内核概述-信号与进程间的通信
unix信号提供了一种把系统事件报告给进程的一种机制。每种事件都拥有自己的信号编号,通常用一个符号常量来表示,例如SIGTERM。有两种系统事件:异步信号:例如:当用户在终端发送一个中断键,即向前台进程发出一个中断信号SIGINT同步错误或异常:例如:当进程访问内存非法地址时,内核向这个进程发送一个SIGSEGV信号。一般来说进程以两种方式对接受到的信号做出反应:忽略该信号;异步的原创 2013-09-28 11:02:41 · 837 阅读 · 0 评论 -
UNIX内核概述-进程/内核模式
cpu既可以运行在用户态下,也可以运行在内核态。当一个程序在用户态执行时,它不能直接访问内核数据结构或内核的程序。每种CPU模型都提供了从用户态到内核态的转换的特殊指令,反之亦然。一个程序运行时,大部分时间都处于用户态,只有需要内核所提供的服务时才切换到内核态。当内核满足了程序的请求后,它让程序切换到用户态。内核本身并不是一个进程,而是进程管理者。进程/内核模式假定:请求内核服务的进程使用所谓原创 2013-09-27 23:17:23 · 1232 阅读 · 0 评论 -
unix内核概述-内存管理
内存管理是最复杂的活动虚拟内存:所以新近的unix都提供一种有用的抽象叫虚拟内存。虚拟内存作为一种逻辑层,处于应用程序的内存请求与硬件内存管理单元之间,虚拟内存有很多用途和特点:若干个进程可以并发的执行;应用程序所需内存大于可用物理内存的时候也可以运行;程序只有部分代码装入内存是进程可以执行它;允许每个进程访问可用的物理内存子集;进程可以共享库函数或程序的一个单独镜像;原创 2013-09-28 21:03:58 · 1204 阅读 · 0 评论