nachos学习笔记之进程
来源:互联网 发布:软件开发人员工资标准 编辑:程序博客网 时间:2024/05/16 08:34
在nachos里面,和很多其他操作系统一样,一个进程包括:
1 一个地址空间,这个地址空间囊括了所有进程运行需要的存储单元。这个地址空间可以分解为1)一段可执行的代码,2)为进程保存局部变量的栈空间3)保存全局变量的堆空间(eg unix malloc 和 C++的new)在unix中堆空间又分解为BSS(包含初始化为0的变量)和data区
2一个能让CPU有序地执行指令的线程
3其他内容,例如打开的文件
或者说 有一段可执行代码,进程的状态信息,变量的值,操作系统管理进程所需的其他资源(存储空间不仅仅是内存,寄存器,PC等)。对应与nachos是如何实现的呢?
在nachos中,线程和进程是不做区分的,所有线程共享代码和全局变量。nachos中维护一个readlist的数据结构,跟踪准备好执行的线程。在readlist里面的进程是可以在任何时刻被调度上CPU的。每个进程都有一个表示当前运行状态的状态值,nachos的进程有四个状态:
ready:进程有权使用CPU(进了就绪队列readylist),但是恰好别的进程正在使用CPU,当调度器要调度它上CPU时,要将它从就绪队列删除,并把状态改为运行。就绪队列里面的所有进程的状态都是ready。
runing:进程正在运行,一次只能有一个进程运行 ,在nachos中,全局变量currenthread永远指着正在运行的进程。
blocked:在这种状态下的进程一直在等待外部事件,如果外部事件没发生,则进程永不执行,进程通过调用Sleep()函数将自己睡眠,等待的外部事件可能是一个条件变量,信号量的改变等。
just_reat:进程被创建了,但是还没有栈空间,这是一种在创建过程中的过度状态,进程的构造函数通过fork函数创建一个新的线程并且把新线程的状态改为可执行。
- nachos学习笔记之进程
- nachos 学习
- 学习笔记之进程
- nachos学习资源
- Nachos之系统调用
- 浅谈Nachos之COFF
- 学习笔记之守护进程
- Linux学习笔记之---进程
- C#学习笔记之进程
- linux学习笔记之进程
- nachos 内存管理和多进程实现
- Linux+C学习笔记之进程管理
- 学习笔记三之进程控制
- 学习笔记之二获取进程内存
- linux学习笔记之进程管理
- WINDOWS API学习笔记之创建进程
- 学习笔记三之进程控制
- windows API学习笔记 之 结束进程
- 分享:MSSQL找出发生死锁,阻塞的语句并直接KILL掉
- UINavigationController修改默认的动画
- DOM4J 解析xml,创建xml
- C++ 简单的文件加密和解密 实例
- 华为:查找最大的不重复数
- nachos学习笔记之进程
- 第7堂作业
- OEM以及oracle客户端中sys无法以sysdba登录解决案例
- MFC多文档程序中禁用最大最小化按钮
- UDP协议中是否可以使用connect
- DDLog--CocoaLumberjack framework 自定义日志管理
- java中的try中的return与finally执行顺序关系
- 模板类中友元函数
- java.net.SocketException: No buffer space available (maximum connections reached?)