(复习框架,不时更新修改)
#操作系统:计算机系统包含的基本程序集合
》内核(进程管理,进程调度,进程间通信机制,内存管理,中断异常处理,文件系统,I/0系统,网络部分)》其他程序(函数库,shell程序)
操作系统目的:
#进程创建执行:进程执行时,会被装载进虚拟内存,并将相关信息添加到task_struct里
》内存分布
*文本段,程序源指令
*数据段,静态变量
*堆,动态内存分区区域
*栈,动态增长与收缩的段,保存本地变量
1.进程概念,PCB
2.C内存空间分布规律,进程内存映像和应用程序区别
3.环境变量(概念及常见的)
4.进程状态,僵尸进程,机制因果
*僵尸进程:子进程在父进程没有调用wait()或waitpid()情况下退出,该子进程为僵尸进程。
如果父进程还一直不调用wait,该僵尸进程无法回收,只能在父进程推出后被init回收。
5.linux进程优先级
6.how to 创建进程,孤儿进程,进程独立性与竞争性
*两种创建方法:fork()和execve(假的),创建子进程用fork()系统调用,子进程会得到父进程数据段,栈段,和堆区域部分拷贝,可被子进程修改,文本段为共享,不可修改。
用exceve创建新进程,销毁所有内存段去创建新内存段,但需要可执行文本或脚本做参数
两者都是运行进程的子进程。
*孤儿进程:父进程退出后它的一个或多个还在运行的子进程就是孤儿进程。
7.进程环境及常见系统调用
*进程环境:main函数与进程终止。
》main函数:当内核使用一个exec函数执行c程序时,会提前调用一个特殊的启动例程,可执行程序将此列程指定为程序起始地址,启动例程从内核中获取命令行参数与环境变量,为main()函数做准备。
》进程终止:8种,前5种正常终止方式为:1.从main函数调回;2调用exit函数;3.调用-exit或-Exit;4,最后一个进程从启动例程返回;5.最后一个线程调用abort函数;后三种异常终止:6.调用about函数;接受一个信号并终止;最后一个线程对取消请求做出响应。
8.栈帧,C变量局部性因果
栈帧:堆栈
》堆栈:C语言程序运行时必须的一个记录调用路径和参数的空间。
9.线程
10.
11.实际用户/有效用户/实际用户组/有效用户组/有效用户组设置/有效用户组设置区别
实际用户ID和实际用户组ID:登录用户的uid和gid,标识你是谁。
有效用户ID和有效用户组ID:实际用户ID,启用SUID设置,有效用户ID等于文件所有者的uid。实际用户组ID.启用SGID,有效用户组ID等于文件所有者的gid。与附加组ID决定进程访问权限。
suid(chmod u+s file)只能应用在可执行文件上,允许任意用户在执行文件时以文件拥有者身份执行
sgid(chmod g+s file)只能应用在可执行文件上,使任意用户在可执行文件时,将以文件拥有者身份执行。
12.文件描述,文件指针
13.进程等待
14.进程程序替换
15.重定向