操统实习week2

一、关于进程线程需要实现的点

1、进程的状态

a、创建
b、就绪
c、运行
d、等待
状态之间会有相互的转化:
在这里插入图片描述

2、进程的调度

进程调度需要考虑多方面的因素,调度总体上分为抢占型的调度和非抢占:
抢占:除非进程自己放弃CPU,否则其一直占据CPU知道该进程运行结束
非抢占:设置调度器,调度器根据调度算法对进程进行调度

3、进程的同步和互斥

进程的同步和互斥机制:锁机制、信号量和条件变量是常用的进程互斥和同步的机制。

4、进程的信息

进程信息:一个完整的进程包含的内容有:
进程正文内容
进程的数据部分
进程的堆栈
进程控制块:是操作系统对进程进行控制的核心部分,至少包括进程正文段、数据段和栈段的位置;进程的状态;进程的上下文环境,例如寄存器内容等。

5、进程的创建

进程创建的目的:父亲穿件子进程的基本任务是为了新进程构造一个可以运行的环境,包括正文端、数据段和运行的初始栈,以及子进程的进程控制结构,并且保证能够使子进程作为一个可被独立调度的进程。UNIX创建进程的基本方式是:除了与进程状态、标识以及与时间有关的少数控制项外,子进程复制或共享父进程的图像。
子进程复制了父进程的进程图象后,就和父进程一样有了自己的正文段(虽然是与父进程共享)、数据段、一个独立的 PC 指针以及自己独立的运行栈,可以独立运行。我们将进程所
运行的空间称为地址空间,进程 PC 指针和运行栈看作一个线索,那么子进程和父进程一样拥有各自的地址空间和而且各有一个运行线索。

6、线程

线程的作用:线程就是轻量级的进程,为了提高系统性能引入的,同一个进程的不同线程可以共享进程的地址空间。进程与线程有关的主要信息表有:
在这里插入图片描述

二、Nachos的线程管理

1、nahcos中的线程分为:

系统线程
系统线程是只运行核心代码的线程,它运行在核心态下,并且占用宿主机的资源,系统线程共享 Nachos 操作系统本身的正文段和数
据段。
用户线程
Nachos 中用户进程由两部分组成,核心代码部分和用户程序部分。系统部分的作用是初始化线程环境:
储存当前运行线程上下文-》给新线程分配虚拟内存空间-》加载用户程序-》调度运行。
由于nachos模拟的是单机环境,所以用户进程之间会竞争虚拟机的CPU和资源。

线程和进程的资源竞争关系

在这里插入图片描述

2、nachos为线程提供的函数

Fork
Sleep
Finish
setStatus
Yield
线程系统的结构图为:
在这里插入图片描述

正文切换:系统线程依赖于寄主机器,所以涉及具体的机器。涉及的函数有:
ThreadRoot:所有进程的入口程序
SWITCH:线程之间的切换

调度
Scheduler实现进程的调度:
ReadyToRun:将进程放入就绪队列。
FindNextToRu:从就绪队列中找出线程运行并将其从就绪队列中删除

创建一个新的线程
通过设置堆栈的方式,从同一入口进入并传入自己要运行的函数及参数,从而完成进程的切换。
注意进程切换的时候还可能有自己切换到自己的情况,所以要使SWITCH实现该功能

发现还是写在ipad上比较方便!!!
在这里插入图片描述

$ cd /
$ sudo find -name sched.h
$ gedit ./usr/src/linux-headers-5.0.0-27/include/linux/sched.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值