一进程和进程调度1
1什么是进程正在执行的程序代码的实时结果,即处于执行期的程序及相关资源
系统进行资源分配和调度的基本单元Linux系统中的进程:交互式进程shell命令进程、文本编辑器批处理进程编译实时进程视频应用程序1
2Linux下的进程结构内核将所有进程存放在进程链表,链表的每一项的类型为task_struct这个类型就称为进程描述符,一个进程描述符包含了具体进程的所有信息,包括进程的状态、进程标识值、进程间的关系、打开的文件信息等1
进程标识内核通过唯一的进程标识值PID来标识每一个来标志每一个进程PID存放在进程描述符中getpid()获得当前进程的进程号getppid()获得当前进程的父进程号2
进程的状态TASK_RUNNING运行状态(运行就绪、正在运行)TASK_INTERRUPTIBLE可中断的阻塞状态TASK_UNINTERRUPTIBLE不可中断的阻塞状态TASK_TRACED跟踪状态TASK_STOPPED暂停状态设置当前进程的状态:set_current_state(current,state);进程家族树:Linux系统的进程之间存在继承关系,所有的进程都是PID为1的init进程的后代,内核在系统启动的最后阶段启动init进程
3Linux下进程的创建和终止1
创建fork()拷贝当前进程创建一个子进程exec()读取可执行文件并将其载入地址空间开始运行其中,fork()使用写时复制技术,避免拷贝大量用不到的数据,使系统具有快速执行能力2
终止do_exit()释放与进程相关的资源,进程僵死不可运行,处于退出状态但仍保留了进程描述符,此时进程的存在只为父进程能获得它的信息wait()终止进程,占用的所有资源被释放1
4Linux下的进程调度1
进程的优先级Linux采用两种不同的优先级范围1)nice值-20~+19默认值为0