Linux复习_05_进程管理&进程加载
数据总线 地址总线 控制总线 把 CPU和内存和I/O连接起来的。
main.c 编译链接 main(ELF)====》在磁盘上存放。
程序===执行===》进程 存放在内存。
CPU按照顺序执行进程的指令。
操作系统对于进程的管理:(程序:乐谱 进程:演奏的过程 结果:歌曲)
进程的概念:运行中的程序。| 进程是一组有序指令+数据+资源的集合。程序:存储在磁盘上的可执行文件。
操作系统通过PCB(进程控制块)记录进程的相关属性(pid,ppid,优先级,程序计数器,程序上下文)。
进程新生成时,必须先分配PCB结构,后才生成进程主体
进程结束时,先释放主体,然后才会释放PCB结构
僵死进程:进程主体释放,但是PCB依旧保存。
操作系统发展
-
串行处理
- 批处理
- 多道程序设计
- 分时
- 实时
主函数传参:
int main(int argc ,char *argv[],char *envp[]);
argc:传递的参数的个数。
argv:传递的参数列表(默认会给函数传递一个参数:执行的命令)
envp:环境变量
输出缓冲区刷新的条件:
- 程序结束 _exit(0)不起作用
- 遇到'\n'
- 缓冲区满 1024
- 主动刷新fflush(stdout)
atexit(void(*fun)() );注册一个退出函数,多个执行顺序为栈的特性。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void fun1()
{
printf("i am fun1\n");
}
void fun2()
{
printf("i am fun2\n");
}
int main()
{
atexit(fun1);
atexit(fun2);
printf("hello\n");
sleep(3);
printf("world\n");
exit(0);
}
[[email protected] going0319]# ./printf
hello
world
i am fun2
i am fun1