系统编程二
来源:互联网 发布:程序员中级考试 答案 编辑:程序博客网 时间:2024/06/06 03:57
进程状态转换
父进程通过一个fork()可以生出一个子进程,此时是就绪状态(task_running),它是在等待cpu的调度(schedule),如果它被CPU调度了,就会变成执行态(task_running)。如果此时需要等待资源(好比是排队排到你了,但你忘记带钱了),就进入睡眠状态,可分为浅度睡眠和深度睡眠。浅的可以被信号中断唤醒,深的不行,浅的一般都是等待一个软件信号,深的都是硬件信号,比如一个键盘按钮。当你回去取钱回来时候,又重新进入了就绪状态。 执行态收到暂停信号(SIGSTOP,SIGTSTP)时候,就会进入暂停状态(TASK_STOPPED,TASK_TRACED)。当它收到SIGCONT信号时,会重新进入就绪状态。执行状态退出之后会变成僵尸状态(EXIT_ZOMBIE),它可以通过多种情况退出,如下图所示。死的时候不会立刻释放进程,此时被称为僵尸态。他要先跟父进程报告下他怎么死的,任务完成的怎么样等信息,这些信息都是存在task_struct结构体里面。要等父进程通过调用wait()才会回收资源,这时子进程就变成死亡状态(EXIT_DEAD)。wait还可以同步父子进程。因为一开始父进程子进程是并发的,他们是自己干自己的事,没有先后状态。如果父进程调用了wait()那么就等待子进程了,这时候就同步了。wait()的具体作用也是如下图所示:
0 0
- 系统编程(二)
- 系统编程二
- Linux系统编程--文件(二)
- Linux系统编程(二)
- Linux/Unix系统编程手册二:系统编程概念
- MFC数据库管理系统编程(二)
- linux 系统编程学习笔记二
- Linux系统编程--进程控制 (二)
- Linux系统编程--线程控制(二)
- linux系统编程之线程(二)
- linux系统编程知识(二)
- 【Unity编程】Unity动画系统(二)
- 系统编程之进程控制编程(二)
- Windows 系统编程初探 (二)俗套的 Hello World
- Windows 系统编程初探 (二)俗套的 Hello World
- Linux系统下的多线程编程入门二
- Linux系统下的多线程编程入门二
- android图形系统编程学习(二)入门
- string.split 匹配一个多个空格分割成string数组
- seq2seq 预测时 feed 自己的数据 (接上文)
- Linux添加/删除用户和用户组
- 一天搞定CSS:表格(table)--19
- 4-RabbitMQ交换机-direct
- 系统编程二
- 【C++后台开发面试】Linux系统相关
- pandoc md 文件转化pdf(中文字体)
- 8——合并表记录
- spring @Transactional 注解学习
- Redis缓存
- iOS开发学习专题-基础知识(三)NSDictionary字典NSMutableDictionary可变字典NSDictionary字典和json转换详细使用方式
- GSON解析Json格式数据
- JAVA设计模式------观察者模式