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

原创
2013/11/08 10:58
阅读数 109
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
















展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部