Unix的特点:
Unix已经发展成为一个支持多任务,多线程,虚拟内存,换页,动态链接和TCP/IP网络的现代操作系统。
操作系统包括:内核,设备驱动程序,启动引导程序,命令行Shell或者其他种类用户界面,文件管理工具和系统工具。
通常一个内核有负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序,网络、进程间通信程序,等。
内核不同于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限,这种被保护的内存空间,统称为内核空间。
应用程序将以用户态进入用户空间,只能访问内核划给的空间。
内核空间和用户空间有各自的地址空间,用户代码不能访问内核空间的数据,只能通过系统调用(通过硬件)。
内核空间有一个共享的堆栈,供所有内核代码动态调用。
用户通过系统调用,执行内核函数代码,然后返回给进程。
就是调用内核的函数。
系统调用:应用程序通过调用库函数(比如C库),再由库来系统调用,从而让内核代其完成不同任务。
当应用程序执行一条系统调用,我们就说内核正在带其执行。
举例:printf()函数,提供了数据缓存和格式化等操作,而write()只是printf()其中一项操作。
open()就是open()
strcpy()
当硬件想要和系统通信时,它首先发出一个异步的中断信号去打断处理器的执行,继而打断内核的执行。通过中断号,内核能找到相应的中断服务程序来处理中断。
举例:当敲击键盘时,键盘控制器发送一个中断信号告知系统,键盘缓冲区有数据到来,内核根据中断号调用终端服务,然后告诉键盘控制器,可以继续输入数据了。
保证中断服务程序能在第一时间处理中断,然后快速退出。
单内核模块之间可以相互调用
内核的分模块
单内核:
内核设计为单内核,就是将内核从整体上作为一个单独的大过程来实现,运行在一个单独的地址空间,内核间的通信微不足道,都可以直接调用,内核以单个的二进制文件存在于磁盘.
简单,高性能
微内核:
所有服务都独立运行并且运行在各自的地址空间上。消息通信,上下文切换。4次如下