操作系统常识

4.进程同步

1.什么是临界区?什么是临界资源

在计算机系统中,临界资源指的是被多个并发执行的线程或进程共享访问的某个资源,如共享内存区、共享文件等。

临界区指的是访问临界资源的那部分代码片段,它是一段需要保护的代码区域。

在计算机系统中,临界资源指的是被多个并发执行的线程或进程共享访问的某个资源,如共享内存区、共享文件等。临界资源的访问需要保证互斥性,即同一时刻只有一个线程或进程能够访问该资源,并且对该资源的访问必须要按照一定的顺序进行,否则可能会导致数据不一致或者错误的结果。因此,需要采用一些同步机制来保护临界资源的访问。

临界区指的是访问临界资源的那部分代码片段,它是一段需要保护的代码区域。当某个线程或进程进入到临界区时,其他线程或进程必须等待该线程或进程离开临界区后才能再次尝试进入临界区,这种互斥的机制通常使用锁、信号量等同步机制来实现。对临界区的正确保护是很重要的,因为不正确的保护可能会导致数据的不一致或者竞态条件(Race Condition)等错误发生。所以,程序员需要特别注意对临界区的保护。

 

2.同步机制应遵循哪些准则?

空闲让进,忙则等待,有限等待,让权等待。

让权等待:当进程不能进入临界区的时候,其应立即释放处理机,也就是阻塞自己,以免进程进入忙等。

3.

操作系统常识_第1张图片

4.管程中的条件变量有什么用?

条件变量是管程中一种重要的同步机制,用于实现等待和通知机制。条件变量表示某个进程或线程等待某个条件成立,因此通常被用于协调多个进程或线程之间对于共享资源的互斥访问,使得共享资源的访问是有序的。条件变量与互斥变量配合形成管程的经典同步机制,常用于解决经典的生产-消费问题和读-写问题等。

具体来说,条件变量的作用有以下几个方面:

1. 等待条件:进程或线程调用条件变量的等待操作时,如果条件不成立,就会把自己阻塞在条件变量的等待队列中,直到条件成立时被唤醒。等待队列是一种数据结构,保存了当前等待条件成立的进程或线程的信息。

2. 唤醒条件:进程或线程调用条件变量的唤醒操作时,可以唤醒一组或者一个等待该条件成立的进程或线程,使得它们可以重新竞争访问共享资源的机会。

3. 保护共享资源:当多个进程或线程需要访问同一个共享资源时,可以利用条件变量来保证访问顺序,避免竞争和冲突问题,提高程序的可靠性。

总之,条件变量是管程中一种重要的同步机制,常用于协调多个进程或线程之间对于共享资源的访问,解决生产-消费问题和读-写问题等。通过等待操作和唤醒操作的协同作用,可以保证在访问共享资源时避免竞争和冲突,从而提高程序的可靠性和稳定性。

5.从键盘的一个键按下,到屏幕显示一个字符,经历了什么?

批处理系统和分时系统都是计算机操作系统的一种,但是它们有明显的区别:

1. 工作方式不同:批处理系统是按照一定的顺序和规则组织用户提交的任务,然后批量地进行处理;而分时系统则是将计算机资源分时分给不同的用户,实现多个任务的并行处理。

2. 响应时间不同:批处理系统处理任务时,需要等待所有任务完成,只有当所有任务都完成后,才能得到结果。而分时系统是实时响应的,可以在用户提交任务后立即进行处理,并在短时间内输出结果。

3. 调度算法不同:批处理系统通常采用"先进先出"(FIFO)或优先级算法对任务进行排序和调度,而分时系统通常采用时间片轮转算法或优先级调度算法,根据不同的调度策略为用户提供合理的资源分配和优化。

4. 用户类型不同:批处理系统主要面向商业用途,用户多为数据处理员;而分时系统主要面向科学、技术等领域,用户多为研究员、开发人员等。

5. 系统负载不同:由于任务处理机制不同,批处理系统可以一次性处理大量任务,系统负载相对较大;而分时系统则会根据系统负荷自动调整时间片或资源分配量,以保持系统平稳运行。

总之,在不同的应用场景下,批处理系统和分时系统都有自己的独特优势和适用性。批处理系统适用于对大量数据进行处理的场景,而分时系统则适用于需要实现交互性,需要实时响应并快速处理的场景。

 6.linux在响应中断时,如果有另外一个中断信号,好像切换。而windows好像是屏蔽中断?

在处理外部中断时,Linux和Windows处理中断的方式以及实现机制是有所不同的。

Linux内核采用的是可重入的中断处理方式。在处理一个中断请求时,如果来自其它设备的中断请求也同时到达,内核会先保存当前中断请求的上下文信息,然后开始处理新到达的设备请求。这个过程是通过使用自旋锁来保证的,确保多个中断请求之间不会产生冲突。当处理完新的中断请求后,内核再切换回之前被暂停的中断请求进行处理。这就是Linux内核通过“中断嵌套”来实现可重入性的机制。

而Windows在处理中断时,则采用了一种不可重入的中断请求处理机制。当一个中断被响应时,操作系统会尝试把当前请求的状态保存下来,并立即屏蔽其他设备产生的中断请求。待当前中断请求的处理完毕之后,操作系统再解锁其他设备产生的中断请求。这样做的目的是防止多个中断请求之间产生竞争或出现死锁等问题。

总之,Linux和Windows在中断处理上有各自的优点和特点,都是经过深思熟虑之后再做出的决策,它们的设计都是为了在操作上更高效、更可靠的响应外部设备的中断请求。

7. 分时系统和批处理系统和实时系统分别是什么,有什么区别?

分时系统、批处理系统和实时系统,是计算机操作系统的三种主要类型,它们之间有以下区别:

1. 分时系统:分时系统支持多个用户同时连接到计算机系统,并能够为他们提供交互式的计算环境。这种系统通常采用时间共享技术,将 CPU 时间分配给每个用户,以提高系统的利用率。分时系统重视系统响应时间和交互性,通常用于桌面应用、客户端服务等需要交互式处理的场合。

2. 批处理系统:批处理系统是一种自动化的计算环境,它按照用户提交的一批作业,自动依次完成计算任务,系统无需人工干预。该系统需要进行批量处理,处理方式通常为一次输入,多次输出,故称“批处理”。批处理系统重视运行效率和吞吐量,在前台没有用户等待的情况下发挥最佳作用,通常用于大数据处理、单元测试等需要快速处理大量数据的场合。

3. 实时系统:实时系统是一种需要严格控制响应时间,并且能够在限定时间之内完成处理的计算机系统,它被广泛用于一些高要求的实时应用,如飞行控制系统、交通信号系统等。实时系统有硬实时和软实时之分,硬实时更加严格,要求在规定的时间内完成计算,而软实时则允许一定的程序运行时间误差。实时系统需要即时响应,确保时间限制内完成计算,通常使用专用硬件和软件。

总之,三种系统各有优缺点,各自适用于不同的计算需求。

 

8.操作系统是怎样启动的?

bios比较特殊,放在rom里

操作系统常识_第2张图片

根据CS和IP寄存器 去找到bios

 

Boot Lader将操作系统启动代码读入内存,将操作系统装入。

操作系统常识_第3张图片

 操作系统常识_第4张图片

总结:

操作系统启动过程通常包括以下步骤:

1. 加电自检(POST):在计算机加电后,BIOS(基本输入/输出系统)芯片将执行加电自检(POST)。这是检查计算机中各种设备和连接性是否正常的过程。在通过 POST 后,BIOS 将查找可引导设备。

2. 引导设备选择:BIOS 将查找可引导设备,即硬盘、光盘或 USB 设备。它将尝试从每个设备的引导扇区中读取引导记录(boot record),并将控制权传递给引导扇区上的第一个可执行代码。

3. 启动引导程序:引导记录中的第一个可执行代码是引导程序(boot loader),它负责加载操作系统内核到内存中。引导程序通常存储在硬盘或固态硬盘(SSD)的第一个扇区中,在 Windows 操作系统中被称为 MBR(Master Boot Record),在 Linux 操作系统中被称为 GRUB。

4. 内核加载:引导程序将操作系统内核加载到内存中,初始化进程、系统线程和设备驱动程序。此时,操作系统内核已经运行了。

5. 初始化:操作系统内核运行后,通过进行系统初始化过程,如分配内存、启动守护进程,检查硬件、配置设备驱动程序等等,让系统进入可以运行程序的状态。

6. 用户登录:最后,系统会提示用户登录,并确定用户的身份后让其操作计算机。

总之,操作系统启动过程是一个复杂的过程,经历了多个步骤,包括硬件检查、启动引导程序、加载内核、设备驱动程序的初始化和用户登录等等。每个步骤都是重要的,确保操作系统正确启动并经过必要的设置,为用户提供稳定的系统环境。

 9.一次典型的交互所需要的时间 是指的什么?

一次典型的交互所需要的时间通常是指从用户输入一个命令或请求到系统开始响应的时间。这个时间包括了用户按下键盘或鼠标等输入设备的时间,以及系统对输入设备的响应时间和处理请求的时间。这个时间通常被称为响应时间(Response Time)或者交互延迟(Interactive Latency)。

对于已经启动的应用程序,响应时间通常是很短的,因为系统已经准备好响应用户输入。但是,对于新启动的应用程序或系统中负载较高的情况,响应时间可能会增加。这样会给用户带来不良使用体验,因为响应时间过长可能会导致用户感到不耐烦,或者以为系统已经发生故障。

通常,为了确保良好的用户体验和高用户满意度,我们需要尽可能地缩短响应时间。对于一些关键的应用程序,比如金融交易等,响应时间甚至需要控制在毫秒级别。为此,系统设计时需要从多个方面进行优化,包括算法、系统架构、硬件配置等。

时间片大小的选择:  选择一个略大于 一次典型的交互所需要的时间 ,是大多数交互进程都能在同一时间片内完成,获得很小的响应时间。

10.

 

 

你可能感兴趣的:(java,开发语言)