什么是系统编程
最简单的程序直接从键盘读取数据,程序处理读入的数据,最后将处理的结果输出到显示器上面显示给用户(程序在处理过程中可能对磁盘进行一些操作)。
对于多用户系统,可能同时有多个用户在使用同一个程序或者计算机的资源(计算机的资源指 CPU 的运行时间、内存、显示器、磁盘等等)。由于某些资源不能同时给多个用户或者程序使用(比如当用户数量或者运行中的程序数量大于 CPU 的核心数时,必然有些程序处于暂停状态),此时就需要对程序使用资源的方式进行管理。
专门用来管理计算机资源的程序称为操作系统(Operating System,OS),用于给程序分配它运行需要的资源,作为硬件和程序联系的桥梁等。OS 是程序,程序只有在内存中运行才能产生效果,所以一般情况下,OS从电脑开机之后就一直在内存中运行。
由于所有的计算机资源都是由 OS 管理的,所以其他程序(除了 OS)如果需要用到计算机资源(如键盘、显示器等),需要通过 OS 提供的接口才能使用。一般情况下,程序对硬件的访问必须通过 OS。计算机的内存划分为两个部分:运行 OS 的内存区域称为系统空间,运行其他程序的内存区域称为用户空间。
系统资源
- 处理器:用于执行指令。
- 输入输出(I/O):所有的输入输出数据都流经 OS,由 OS 统一管理。
- 进程管理:程序的一次运行称为进程,OS 管理进程的创建、暂停、终止等。
- 内存:任何程序执行过程中需要的资源。
- 设备:各种外部设备。
- 计时器:特定程序的执行和时间相关,此时会用到。指令的执行也和时间相关。
- 进程间通信:两个运行中的程序之间交换数据。
- 网络通信:不同主机的进程之间进行通信。
Unix 操作
注销指令:exit
,有些系统中可以使用 logout
或者 Ctrl+D 从系统注销。用户注销后,OS 会销毁为此用户创建的所有进程。
登录:用户输入正确的用户名和密码进入系统后,OS 会专门为新进入的用户创建一个称为 shell 的进程,这个进程用于解释用户的输入。当用户从键盘输入时,OS 将输入传递给 shell 程序,由 shell 对用户的输入进行响应。
date
:显示当前日期和时间。
随机显示格言:fortune
。
文件系统:/
表示文件系统的根目录,文件系统组织形式为树结构。
ls
:列出当前目录内容, ls 目录名
列出特定目录中的内容。
改变当前目录:cd 目录名
改变当前目录为指定的目录;cd ..
返回当前目录的上一级目录,'..' 表示当前父目录 '.' 表示当前目录;cd
回到当前用户的主目录,一般为'/home/username'。
pwd
:显示当前目录的全路径名,从根目录/
开始。
mkdir
:在当前目录位置创建一个指定名称的目录,mkdir 目录名
。
rmdir 目录
:删除指定的目录,该目录必须为空。
文件命名规则:除了表示根目录的 '/' 之外,其他英文系的字符都可以(包括空格和回车符)。
cat 文件名
:显示指定文件的全部内容。
more 文件名
:显示指定文件的一屏幕的内容,若按 ‘q’ 则退出;按空格则继续显示下一屏幕的内容;按回车则继续显示下一行的内容。
less
或者 pg
:和 more
类似。
cp 源文件名 目标文件名
:将源文件复制到以 “目标文件名” 为名称的新文件中。
rm 文件名
:删除指定的文件。
mv 文件名 目标文件名/目标目录名
:如果第二个参数为文件名,则将文件名称改为目标文件名;若第二个参数为目录名,则将该文件移动到指定的目录中。
lpr 文件名
:打印指定的文件。
文件权限:文件权限分为读、写、执行三种,同时又具有三组权限:第一组指文件的所有者、第二组指文件所在者所在的 group、第三组指其他 group 的用户。
ps
:显示当前系统中的所有进程。
bc
:计算器程序,可以计算很大的数。实质上将中缀表达式转换成后缀表达式并传递给 dc
程序。
dc
:接收一个后缀表达式,计算表达式的值。
参考文献
[1] Bruce Molay,Unix Linux编程实践教程,2004.