首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Unix系统编程札记:2、程序、进程、线程

2013-11-12 
Unix系统编程笔记:2、程序、进程、线程1、程序怎么转换成进程? ? 程序(program)是为了完成特定的任务而准备好

Unix系统编程笔记:2、程序、进程、线程
1、程序怎么转换成进程? ? 程序(program)是为了完成特定的任务而准备好的一个指令序列。?? ? ????c编译器将每个源文件翻译成一个目标文件,然后编译器将这些单个的目标文件同必须的一些库相链接,形成一个可执行模块(executable module),? ? 程序运行或执行时,操作系统将可执行模块拷贝到主存储器的程序映象(program image)中去。?? ? 进程(process)是一个正在执行的程序实例。每个实例都有自己的地址空间和执行状态。? ? 每个实例都有自己的地址空间和执行状态。? ? 当操作系统向内核数据结构中添加了适当的信息,并为运行程序代码分配了必要的资源之后,程序就变成了进程。?2、线程和执行线程? ? 程序执行时,由进程程序计数器的值来决定下面该执行哪一条进程指令。得到的指令流被称为执行线程(thread of execution)?? ? 线程是代表了进程内执行线程的一种抽象数据类型,线程有自己的执行栈、程序计数器值、寄存器组和状态。? ??3、程序映像的布局? ? 加载之后,可执行程序看起来占据了一个连续的内存体,这个连续的内存块被称为程序映像?4、库函数调用? ? 必须要处理所有的错误,而不仅仅是那些必须检测的错误????? ? perror输出一个对应error当前值的错误消息? ? #include <stdio.h>? ? void perror(const char *s);?5、函数返回值和错误? ? 错误处理是编写可靠系统程序中的一个关键问题。????? ? 处理unix程序中的错误的标准方法有:? ? a)打印出错消息并退出程序? ? b)返回-1或NULL,并设置errno这样的错误指示符? ? c)返回错误码?6、参数数组? ? 参数数组(argment array)是一个指向字符串的指针数组? ? mine -c 10 2.0? ? argv[0] = mine? ? argv[1] = -c? ? argv[2] = 10? ? argv[3] = 2.0? ? argv[4] = NULL???????????????

?

热点排行