2026年01月21日/ 浏览 8
(1)程序模型:


看图,从程序模型来看,程序是用来读写外部设备的。以键盘显示器为例,有
它的程序模型为下图:
(2)那如果多个用户呢
虽然模型复杂了,但对程序而言,它还是从键盘得到数据,将结果显示在显示器上,也可以对磁盘读写,这些操作都没有任何问题,它使用的还是简单模型。
(3)那如果多用户的键盘显示器要任意连接到各个用户程序呢,这样就不只是固定的复杂连接,甚至还有动态的连接。
(4)这时就需要操作系统了。有了操作系统以后,图1.4的混乱状态就可以得到改变,新的模型如下所示。操作系统也是程序,与普通程序一样,也运行在内存中,把普通程序与其他程序或设备连接起来。
(5)操作系统 为程序提供服务
操作系统控制程序与程序,程序与设备的连接。程序要访问设备(如键盘、磁盘和打印机)必须通过内核,所以只有内核才能直接管理设备。
程序如果要从键盘得到数据,必须向内核发出请求,若在显示器上显示结果,也要通过内核,程序中所有对设备的操作都是通过内核进行的。
编写普通程序时可以认为,程序是直接连到键盘、显示器、磁盘等设备的,但在进行系统编程时,必须对系统的结构和工作方式有更深的了解,要知道内核提供哪些服务(系统调用),如何使用它们,系统有哪些资源和设备,不同的资源和设备该如何操作。
(6)系统编程
内核提供服务以便系统程序可以直接访问系统资源,那么有哪些系统资源和服务呢?处理器(Processor)、输入输出(I/(O)、进程管理(Process Management)、内存(Memory)、设备(Device)、计时器(Timers)、进程间通信(Interprocess Communication)、网络(Networking)
(7)从用户的角度来理解Unix
Unix 能做些什么:登录一运行程序一注销,目录操作,文件操作,后续会深入。(8)从系统的角度来看Unix
用户和程序之间的连接方式,就是程序之间的连接(输入输出的连接),后续会深入。(9)动手实践:more命令
遵循:1、它能做什么? 2、它是如何实现的? 3、能不能自己编写一个?后文续接......