操作系统
文章平均质量分 66
Orange#
这个作者很懒,什么都没留下…
展开
-
OSTEP notes
IntroductionOperating Systems: Three Easy Pieceshttps://github.com/remzi-arpacidusseau/ostep-homeworkIndex of /~remzi/OSTEP/ChineseVirtualizationProcessescontent进程状态切换:进程数据结构 process list process control block(PCB)homeworkPROCESS_SWITCH_B原创 2022-05-11 16:22:30 · 326 阅读 · 0 评论 -
mmap 通过地址映射读写文件
预备知识理解mmap,首先要理解什么是用户态和内核态,其次要了解虚拟内存。简单的说,用户态内核态指的就是cpu指令集的权限程度,我们用户程序并没有操作硬件的权限,于是很多操作都需要转为内核态才能被执行。我们的物理内存也是分为用户空间和内核空间的,比如32位处理器的寻址范围为4G,那么低地址的3G就是用户空间,高地址的1G是内核空间。其次是虚拟内存,虚拟内存是一种感受,我们作为os的使用者,能加载的程序大小其实可以超过物理内存,这是因为内存空间不足时,访问一个不存在于内存的数据,会触发缺页中断,进原创 2021-12-05 02:47:29 · 602 阅读 · 0 评论 -
分页存储管理方式
原理分页式存储管理的原理:假设一个进程大小1KB,我们把1KB分成若干个大小相同的块,叫做一个页面或一页;每页加以编号,从0开始。同时把内存空间分割成与页面大小相同大小的一块块,叫做块或者页框;这样将进程装入内存时,就以块为单位,将进程分为多个部分装入不相邻的物理块中。(进程的最后一页经常装不满而形成页内碎片)基本分页式存储管理(简单分页式存储管理)的原理:当一个作业需要被调入内存...原创 2021-06-20 00:55:31 · 3095 阅读 · 0 评论 -
进程调度
进程调度进程调度=低级调度=短程调度,目的是决定就绪队列中的哪个进程获得cpu,并且由分派程序分配给该进程。进程调度在批处理、分时、实时操作系统中都存在。进程调度两种调度方式非抢占式(Non-preemptive Mode) 抢占式(Preemptive Mode)抢占的原则:1、优先权原则:优先权高的可以抢占优先权低的进程的处理机2、短作业优先原则:短作业可以抢占长作业的...原创 2020-04-07 22:47:02 · 331 阅读 · 0 评论 -
高优先权调度算法和高响应比优先调度算法
高优先权调度算法(FPF)为照顾紧迫性作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中。它分为两种:非抢占式优先权算法、抢占式优先权调度算法。优先权的类型有静态优先权和动态优先权,最高优先权调度算法的关键就在于:使用静态优先权、动态优先权和如何确定进程的优先权。...原创 2020-03-29 22:42:20 · 7344 阅读 · 0 评论 -
先来先服务和短作业优先调度算法
调度算法的概念在OS中调度的实质是一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法:例如,在批处理系统中为照顾为数众多的短作业,应采用短作业优先的调度算法;又如在分时系统中,为了保证系统具有合理的响应时间,应采用轮转法进行调度。目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但有些算法...原创 2020-03-20 23:07:20 · 25757 阅读 · 0 评论 -
处理机调度的层次和调度算法的目标
处理机调度的基本概念在多道程序环境下,进程数目往往多于处理机数目。这就要求系统能够按某种算法,动态的把处理机分配给就绪队列中的一个进程,使之执行。 分配处理机的任务是由处理机调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统性能,在很大程度上取决于处理机调度的性能。 因此,处理机调度便成为OS设计的中心问题之一。处理机调度的层次...原创 2020-03-20 21:17:14 · 2343 阅读 · 0 评论 -
读者—写者问题
读文件的进程成为reader进程,其他进程成为writer进程。其中reader和writer进程都存在多个 ,reader之间共享,writer之间互斥,reader和writer互斥。也被称为读读共享、写写互斥、读写互斥。这样的模式是非常容易理解的,更改存储空间内容的进程容易引发同步问题,所以涉及更改的进程都必须要互斥。读进程不更改内容,没必要互斥。写完才能读,没写完的时候读进程不能执...原创 2020-03-19 17:13:33 · 711 阅读 · 0 评论 -
哲学家进餐问题
五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在桌子上有五只碗和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子(先拿左边的筷子再拿右边的筷子),只有在他拿到两只筷子时才能进餐。进餐毕,放下筷子继续思考。放在桌子上的筷子是临界资源,在一段时间内只允许一个哲学家使用。为实现对筷子的互斥使用,用一个信号量表示一只筷子,五个信号量...原创 2020-03-15 11:28:06 · 994 阅读 · 1 评论 -
生产者——消费者问题
一般意义的“生产者—消费者”问题:N个buffer,多个生产者,多个消费者,循环存取buffer。这就是一般意义的“生产者—消费者”问题。利用记录型信号量解决一般意义的“生产者—消费者”问题。基础代码:改进后:新的问题:更好的写法:我们一般使用原写法,即一个mutex的写法。注意点:用其他方式解决问题:...原创 2020-03-12 22:39:57 · 247 阅读 · 0 评论 -
信号量的应用
利用信号量实现进程互斥为使多个进程互斥的访问某临界资源,须为该资源设置一个互斥信号量mutex,并设初始值为1,然后将各进程访问资源的临界区CS置于wait(mutex)和signal(mutex)之间。例如用记录型信号量实现两个进程互斥适用一个打印机:semaphore mutex =1; //表示打印机 begin parbegin...原创 2020-03-08 20:23:01 · 1393 阅读 · 0 评论 -
信号量集
现在的使用情景是多资源多数量, 就是一个进程需要申请多个资源,每个资源数量又要求多个。描述资源的结构体做出了改动:typedef struct{ int value; int d; int t; struct process_control_block * list;} semaphore;原有的value和list阻塞队列保留,新增属性t和d。d表...原创 2020-03-07 13:20:27 · 2849 阅读 · 1 评论 -
AND型信号量
避免出现多个资源共享导致的死锁,那么在每个进程把需要的各种资源都得到并完成计算之后释放,另一个进程也在拿到需要的全部资源之后计算,这样就不会出现交叉使用资源的情况。每个进程把需要的全部资源拿到后才会进入临界区。那么wait操作就需要改变:wait(S1, S2, …, Sn){ While(TRUE) { if (S1 >=1 and … and ...原创 2020-03-07 12:19:23 · 10277 阅读 · 1 评论 -
整形信号量
信号量可以理解为某一类可用资源的数目,信号量用来解决进程同步和互斥问题。整型信号量是整型量,仅能通过两个原子操作来访问。原子操作是不可中断的,原子操作就是原语的执行,这段代码不可中断,要执行都执行完,若执行不完则回到这段代码起始位置重新执行。两个原子操作分别是P操作和V操作:// P操作 伪代码wait(S): While(S<=0) do no-op; S--;...原创 2020-03-06 22:36:57 · 5670 阅读 · 0 评论 -
记录型信号量
在整型信号量中,如果某个进程一直等待,不妨把这个进程放入阻塞队列,为CPU腾出空间,当该进程条件满足再将其从阻塞队列中拿出。因此记录资源的类型发生了变化:typedef struct{ int value; struct process_control_block * list;} semaphore;value表示资源数量,list表示该类资源的阻塞队列。wait...原创 2020-03-06 22:36:20 · 10854 阅读 · 1 评论 -
进程同步的基本概念
进程间两种形式的制约关系两种制约关系:资源共享、进程合作。有学过多线程编程的人应该知道两大模型:卖票模型和生产者消费者模型。资源共享也就是卖票模型,多人同时购买有限的票,多个单位同时使用同一个资源,这就是资源共享;生产者消费者模型就是进程合作,生产者生产一个实体,消费者消费一个实体,其中消费者消费的前提是生产者已经生产出了实体,生产者生产的前提是消费者已经把实体消费掉。两个进程之间需要相互...原创 2020-03-06 18:27:37 · 1881 阅读 · 0 评论 -
进程控制
进程的创建进程图进程图用来描述进程的家族关系,是一个有向树。表示的就是一个进程中还可能创建其他进程,或者一个进程是另一个进程执行的前提。引起创建进程的事件用户登陆、作业调度、提供服务、应用申请。qq或者微信的登陆都会启动一个进程,一点开qq,这个进程就会在任务管理器中出现。作业调度就是把外存上的作业调入内存,分配资源并为其创建进程来使用CPU。服务在任务管理器中也很常见,网络服...原创 2020-03-06 16:59:22 · 433 阅读 · 0 评论 -
进程的描述
进程的特征和定义进程的定义有很多种,我们可以通过这些定义全面的了解进程。(1)进程是程序关于某个数据集合的一次执行过程。(2)行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程。(3)进程是这样的计算部分,它是可以和其它计算并行的一个计算。(4)进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动。(5)进程是执行中的程序。综合来看,进程是数据、程序、硬件之...原创 2020-02-29 21:22:25 · 1478 阅读 · 0 评论 -
前驱图和程序执行
前趋图前趋图是一个有向无循环图,用于描述进程之间执行的前后关系。每个节点可以代表一段程序,一个进程或一条语句。无环是为了防止程序出现死锁。比如下图:其前趋关系有两种表示:{p1->p2,p1->p3,p1->p4,p2->p5,p3->p5,p4->p6,p4->p7,p5->p8,p6->p8,p7->p9,p8->...原创 2020-02-28 19:16:47 · 2055 阅读 · 0 评论