一。What is system programing?
1.native sigle program module of programing
typical program in this module
main()
{
int c;
while((c = getchar()) != EOF)
printfchar(c);
}
在这个模型中,程序就是在计算机上运行的一段代码,程序把输入数据做相应的处理后输出
2.reality
lots of user ,lots of program, lots of disks,lots of devices,they are all connected
这种随意的连接是不允许的
3.the role of operating system
to manage all resources and connect the various devices to the correct program
在进行普通程序编写时可以认为,程序是直接连接到了键盘、显示器、磁盘等。但是在进行系统编程时,必须对系统的结构和工作方式有更深的了解,要知道内核有那些系统调用,如何使用他们,系统有那些资源和设备,不同的资源和设备该如何操作
二。the understanding of system programming
1.services provided by the kernel
<1>input/output <2>process management <3>memory <4>devices <5>timers <6>network
2.understand UNIX services by:
<1>seeing how they are used <2> learning about the system able to invoke the services<3>writing our own versions of various systems programs
3.从系统的角度来看UNIX
《1》网络桥牌:游戏开始后每个用户都能看见一个共同的牌桌和其他用户出的牌,他们通过网络连接在一起。在网络游戏中由谁来控制哪一个人出牌?牌放在哪里?如何保证两个人拥有同一张牌。
该例子显示了UNIX系统编程的三个重要方面:
1.通信:某个用户或者进程如何与其他用户或者进程通信。
2.协作:程序如何来协调多个进程使他们能够没有冲突的访问共享资源
3网络访问:计算机中的程序是如何来使用网络的呢
《2》bc
在运行bc以后运行ps命令得出系统中运行的所有进程,发现除了bc之外会有一个dc
man dc 看出dc是一个计算器能接受逆波兰形式计算出表达式的值
bc是dc的预处理器他将用户输入的表达式转换为逆波兰形式然后通过一个称为管道的通信程序交给dc,dc计算表达式的值并将结果返回给bc,bc在将结果显示到屏幕上 UNIX编程在很多情况下就是要解决好建立这些独立的程序之间的连接和协作方式的问题
《3》WEB
与bc类似,在万维网络中,浏览器负责用户界面,在后面负责提供网页的是WEB服务器
下一次博客将会介绍一个具体的命令的实现more命令