操作系统9-进程和系统调度(II)
来源:互联网 发布:c语言角度转弧度 编辑:程序博客网 时间:2024/06/02 07:15
进程的创建
操作系统通常是提供库来创建进程。一般有两种模式去创建进程。在Unix社区进程创建有2个函数:fork(2c)和exec(2c).在Unix大部分进程创建都是通过shell。shell是用户和操作系统互动的中间点。当一个命令(不是shell的一部分)输入,shell会产生(fork)一个进程。
fork(2c)是unix系统调用(在libC库),它允许复制自己。当调用fork时,会产生一个与父进程一样的子进程。它从父进程处继承了整个进程的地址空间,包括进程上下文、进程堆栈、内存信息等。父进程与子进程并发同时运行。可以通过fork返回来判断是否子程序。如果返回0,表示运行在子进程,大于0运行在父进程。
另外一个系统调用是exec(2c),把一个新程序装入调用进程的内存空间,来改变调用进程的执行代码,从而形成新进程。调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新的进程,但是它的进程标识符与调用进程相同。exec没有建立一个与调用进程并发的新进程,而是用新进程取代了原来的进程。
如图,Shell用fork来创建一个新的进程,然后用exec来加载程序的内容。
Windows与 MacOS X
MacOSX与Unix/ Posix基本是一致,windows是有一点不同的。在Windows(NT)你可以用Unix的语法或者用方法CREATEPROCESS。Windows术语也与Unix不一样。
任务,就是进程。
进程,资源的容器。
进程的阶层
就像文件系统一样,操作系统也把进程定义它的规则。当创建一个进程,这个进程叫子进程,操作系统会把子进程和父进程关联起来的。子进程通常会获得父进程资源的子集。
当Unix启动,通常会启动init进程。init进程的任务就是衍生(spawn)其他服务的进程。例如:
ps命令可以查看的打牌PID(ProcessID's)和PPID(ParentProcessID)
参考:
(Linux中的用fork如何由一个父进程创建同时多个子进程),http://www.dnxxj.com/questions/475766b9bb95dd/Linux中的用fork%28%29如何由一个父进程创建同时多个子进程.html
(WINDOWS任务管理器是怎么工作的),http://www.dnxxj.com/questions/475792f3a7a83d/WINDOWS任务管理器是怎么工作的?.html
- 操作系统9-进程和系统调度(II)
- 操作系统8-进程和系统调度(I)
- 【操作系统】多处理机系统中的进程调度和Unix的进程调度
- 【操作系统】系统分类 与 进程调度指标
- 操作系统:模拟进程调度管理系统
- 操作系统实践(9)——进程、多进程、系统调用、进程调度
- 操作系统的作业调度和进程调度算法
- 第一章 1.4操作系统作业调度和进程调度
- 操作系统的进程调度方法和磁盘臂调度算法
- 操作系统之进程调度
- 操作系统进程调度算法
- 【操作系统】进程调度算法
- 操作系统--进程调度算法
- 【操作系统】进程调度策略
- 操作系统进程调度
- 操作系统进程调度算法
- 操作系统进程调度算法
- 【操作系统】进程调度实现
- 从动态客户端缓存到P2P兴趣网
- Adb connection Error:远程主机强迫关闭了一个现有的连接
- Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解
- 60. MySQLi 扩展拾遗
- 【最佳实践系列】基于序列化技术的XML数据源操作模式
- 操作系统9-进程和系统调度(II)
- JAVA总结
- 前端工程化知识要点回顾&思考
- VVDocumenter Xcode7 安装
- LeetCode:Reverse Linked List
- [1093]:A+B for Input-Output Practice (V)
- maven 打包源代码
- 分子,分母的化简以及加减乘除
- getElementsByTagName /getElementsByName /getElementsById