内核是Unix系统的最底层。它提供了系统的核心功能并允许进程(程序)以一种有序的方式访问硬件。它的作用:
(1) 控制进程、输入/输出设备、文件系统操作,以及操作系统所需的任何其他关键功能;
(2) 管理内存;(以上两个功能不称为自治功能,不需要用户进程中的指令)
(3) 支持系统以多用户、多任务模式运行
进程的管理可能非常复杂,一个进程通常会调用另一个进程,在Unix中成为分叉(forking)。
内核管理内存时,有时一个进程需要的内存会超出可使用的内存大小,例如太多进程正在运行,这是需要用到虚拟内存。当没有足够的物理内存时,系统通过把进程的一部分转移到硬盘上以设法容纳进程。当再次需要进程中被转移到硬盘上的那一部分时,再将其返回到物理内存中。这个过程叫页面调度(paging)。
虚拟内存的另一个方面是交换(swap),内核凭借这种机制识别出最不繁忙的进程或者是那些不需要立即执行的进程。然后内核将整个进程移除RAM,放入硬盘,知道下次在需要该进程时为止,此时进程可以从硬盘或者物理RAM上运行。两者的不同之处在于,页面调度只是将进程的一部分移入硬盘,而交换是将整个进程移入硬盘。Unix中用作虚拟内存的硬盘分段称为交换空间(swap space)。
Shell是一种特殊的程序,用于解释并运行由命令行或脚本文件输入的命令,从而实现内核与用户间的交互。
Unix三种主流Shell:
(1) Bourne shell:适合脚本编程,便于移植
(2) C shell:改进Bourne shell
(3) Korn shell:使用不普遍