概念
。Unix系统包含用户程序和系统内核
。内核由多个子系统构成
。内核管理所有的程序和资源
。进程之间的通信对Unix程序是很重要的
。什么是系统编程
相关命令
。bc
。more
解决问题
。什么是系统编程?
。什么是Unix系统编程?
。本书具体会涉及哪些知识?
1.2 什么是系统编程
1.2.1 简单的程序模型
1.2.3 操作系统的职责
计算机用操作系统来管理所有的资源,并将不同的设备和不同的程序链接起来。
1.2.4 为程序提供服务
1.用来容纳操作系统的内存空间叫做系统空间, 容纳应用程序的内存空间叫做用户空间。
2.程序要访问设备(如键盘、磁盘)必须通过内核, 所以只有内核才能直接管理设备。
1.3 理解系统编程
1.3.1 系统资源
1.处理器(Processor)
程序是由指令构成的, 处理器是执行指令的硬件设备, 一个系统中可能有多个处理器, 内核能够安排一个程序何时开始执行, 何时暂时停止、恢复执行、何时中止执行。
2.输入输出(I/O)
程序中所有的输入/输出数据、终端的输入/输出数据还有硬盘输入/输出数据, 都必须流经内核, 这种集中的处理方式有以下优点:
正确性:数据不会流错地方
有效性:程序员无需考虑不同设备之间的差异
安全性: 数据信息不会被未授权的程序非法访问
3.进程管理(Process Management)
进程指程序的一次运行, 每个进程都有自己的资源, 如内存, 打开文件和其他运行所需的系统资源。内核中与进程相关的服务有新建一个进程、中止进程、进程调度等。
4.内存(Memory)
内存是计算机系统中很重要的资源, 程序必须被装到内存中才可以运行。内核的职责之一就是内存管理, 在需要的时候给程序分配内存, 当程序不需要的时候回收内存, 内核还能保证内存不被其他进程非法访问。
5.设备(Device)
计算机中可以有各种各样的外设, 如磁带机、光驱、鼠标、扫描仪和数码摄像机等,他们的操作方式各不相同, 内核能屏蔽掉这种差异, 使得对设备的操作方式简单而单一。
6.计时器(Timers)
程序的工作与时间有关, 有的需要定时触发, 有的需要等一段时间再开始某个动作, 有的需要知道某一个操作消耗的时间, 这些都涉及计时器, 内核可以通过系统调用向应用程序提供计时器服务。
7.进程间的通信(Interprocess Communication)
在现实生活中人们通过电话、Email、信件、广播、电视等互相通信, 在计算机的世界中, 不同的进程也需要互相通信, 内核提供的服务使进程间通信成为可能。就像电信和邮政提供的服务,通信也是资源。
8.网络(Networking)
网络之间的通信可以看做是进程的特殊形式, 通过网络, 不同主机上的进程,即使使用的是不同的操作系统,也可以相互通信。网络通信也是内核提供的服务。
1.3.3 方法:通过三个问题来理解
本书通过以下3个步骤来学习。
1.分析程序: 首先分析现有的程序,了解他的功能以及实现原理
2.学习系统调用:看程序都用到哪些系统调用, 以及每个系统调用的功能和使用方法。
3.编程实现:利用学到的原理和系统调用, 自己编程实现原来程序所实现的功能
以上3步通过下面3个问题来实现:
1.它能做什么?
2.它如何实现?
3.能不能自己编写一个?
1.4 从用户的角度来理解Unix
1.4.1 Unix能做什么
从普通登录到终端的普通用户来看UNIX是什么? 它能做什么?
1.4.2 登录--运行程序--注销
系统验证通过后, 会启动一个叫shell的进程, 然后把用户交给这个进程, 由这个进程处理用户的请求。每个用户都有属于自己的shell程序。