1.进程的概念
进程就是pcb,是操作系统对一个运行中的程序的描述,通过这个描述,实现对程序的调度。
操作系统如何实现多个程序的调度运行:将运行中的程序描述起来,然后将这些描述组织起来进行管理,通过实现pcb的调度管理,实现对运行中程序的切换调度运行。
2.Linux下进程的状态
主要分为运行态(R),可中断休眠态(S),不可中断休眠态(D),停止态(T)和僵死态(Z)
僵尸进程产生:是子进程先与父进程退出,但父进程未关注子进程的退出状态,故成为僵尸进程。危害是资源泄露,处理方法是进程等待。
孤儿进程:父进程先退出,故子进程成为孤儿进程,孤儿进程的父进程为1号进程,孤儿进程运行在后台。
3.环境变量
查看环境变量:echo,env,set
删除环境变量:unset
设置环境变量:export
4. 程序地址空间
进程使用虚拟地址空间,通过页表映射到物理内存,可以实现数据在物理内存上的独立存储。
物理内存的作用:提高内存利用率;内存访问控制;提高进程的独立性
5. 内存管理方式
有三种:分页管理;分段管理;段页管理
分页管理的物理内存计算:物理内存块号*物理内存块大小+虚拟地址中的页内偏移
6. 进程创建
pid_t fork(void);
父子进程代码共享,数据独有,采用写时拷贝技术意思为写时再给子进程重新开辟新的物理地址,然后将数据写入,更新页表。
pid_t vfork(void);
父子进程公用同一个虚拟地址空间,故只有当子进程退出时,父进程才能运行。
7. 进程终止
三种方式:main函数return
void exit(int status);库函数退出调用进程
void _exit(int status);系统调用接口退出调用进程
库函数与系统调用接口的关系:库函数封装了系统调用接口
三者的区别,前两个相较于第三个而言,退出时会刷新缓冲区,后者则是直接退出;前两者的区别,return只能在main 函数中退出进程而exit可以在任意位置退出进程。
8. 进程等待
pid_t wait(int *status);
pid_t waitpid(pid_t pid,int *status,int options);
wait等价于waitpid(-1,status,0);
9. 程序替换
什么样的数据在内存不够用时应该被交换出去
LRU(最久未使用)等算法