【操作系统专业课复习】主干和重点

 

目录

1.文件系统和数据库系统的区别,哪个效率更高,为什么。

2.进程上下文切换具体过程,是怎么实现的

发生进程上下文切换的场景

线程上下文切换

3.BIOS的意思,程序的可移植性

4.操作系统的基本概念

5.操作系统开机过程

6.操作系统分哪些部分,进程管理包含什么内容;

多道批处理系统的优缺点是什么呢?

7.操作系统我们所学的其他课程有什么关系

8.什么是系统调用?它和库函数调用有什么区别?

线程和进程的区别

实模式与保护模式

寻址方式

系统调用的定义

过程调用的定义

系统调用和过程调用的区别和联系

区别 

联系

用户态和内核态

定义

 


1.文件系统和数据库系统的区别,哪个效率更高,为什么。

文件系统和数据库系统之间的区别。 
(1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据; 
(2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离; 
(3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据; 
(4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。


文件系统和数据库系统之间的联系: 
(1)均为数据组织的管理技术; 
(2)均由数据管理软件管理数据,程序与数据之间用存取方法进行转换; 
(3)数据库系统是在文件系统的基础上发展而来的。

(4)均由数据管理软件管理数据,程序与数据之间用存取方法进行转换; 
 

数据库系统的组织和存储是通过操作系统中的文件系统来实现的。


2.进程上下文切换具体过程,是怎么实现的

   上下文切换(有时也称做进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。
进程(有时候也称做任务)是指一个程序运行的实例。在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进程)共享同一地址空间(一段内存区域)和其他资源的轻量级的进程。

  上下文是指某一时间点 CPU 寄存器和程序计数器的内容。寄存器是 CPU 内部的数量较少但是速度很快的内存(与之对应的是 CPU 外部相对较慢的 RAM 主内存)。寄存器通过对常用值(通常是运算的中间值)的快速访问来提高计算机程序运行的速度。程序计数器是一个专用的寄存器,用于表明指令序列中 CPU 正在执行的位置,存的值为正在执行的指令的位置或者下一个将要被执行的指令的位置,具体依赖于特定的系统。


  上下文切换可以认为是内核(操作系统的核心)在 CPU 上对于进程(包括线程)进行以下的活动:

(1)挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于内存中的某处,

(2)在内存中检索下一个进程的上下文并将其在 CPU 的寄存器中恢复,

(3)跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行),以恢复该进程。

将CPU硬件状态从一个进程换到另一个进程的过程称为上下文切换,其实就是运行环境的切换。
进程运行时,其硬件状态保存在CPU上的寄存器中。寄存器有:程序计数器、程序状态寄存器、栈指针、通用寄存器、其他控制寄存器的值
进程不运行时,这些寄存器的值保存在进程控制块中;当操作系统要运行一个新的进程时,将进程控制块中相关值送到对应的寄存器中。
————————————————
原文链接:https://blog.csdn.net/qq_33589510/article/details/79864874

发生进程上下文切换的场景

  1. 为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行。
  2. 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行。
  3. 当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度。
  4. 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行
  5. 发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序。

线程上下文切换

线程与进程最大的区别在于:线程是调度的基本单位,而进程则是资源拥有的基本单位。说白了,所谓内核中的任务调度,实际上的调度对象是线程;而进程只是给线程提供了虚拟内存、全局变量等资源。

所以,对于线程和进程,我们可以这么理解: - 当进程只有一个线程时,可以认为进程就等于线程。 - 当进程拥有多个线程时,这些线程会共享相同的虚拟内存和全局变量等资源。这些资源在上下文切换时是不需要修改的。 - 另外,线程也有自己的私有数据,比如栈和寄存器等,这些在上下文切换时也是需要保存的。


3.BIOS的意思,程序的可移植性

BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口。 BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。

其实,它是一组固化到计算机主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。


4.操作系统的基本概念

操作系统(Operating System, OS):是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境的软件集合。

操作系统的四个特征。并发共享,虚拟,异步。
操作系统的目标和功能。计算机系统资源的管理者。用户与计算机系统之间的接口。扩充机器。用户与计算机之间的接口。命令接口,程序接口。GUI


5.操作系统开机过程

http://www.ruanyifeng.com/blog/2013/02/booting.html

一、第一阶段:BIOS

上个世纪70年代初,"只读内存"(read-only memory,缩写为ROM)发明,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。这块芯片里的程序叫做"基本輸出輸入系統"(Basic Input/Output System),简称为BIOS

1.1 硬件自检

1.2 启动顺序

硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。

这时,BIOS需要知道,"下一阶段的启动程序"具体存放在哪一个设备。

二、第二阶段:主引导记录

BIOS按照"启动顺序",把控制权转交给排在第一位的储存设备。

这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备。

三、第三阶段:硬盘启动

这时,计算机的控制权就要转交给硬盘的某个分区了,这里又分成三种情况。

四、第四阶段:操作系统

控制权转交给操作系统后,操作系统的内核首先被载入内存。

以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。

然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。

至此,全部启动过程完成。


6.操作系统分哪些部分,进程管理包含什么内容;

1、进程管理 
2、存储管理 
3、文件管理 
4、设备管理 
5、系统调用

  进程管理是操作系统的职能之一,主要是对处理机进行管理。为了提高CPU的利用率而采用多道程序技术。通过进程管理来协调多道程序之间的关系,使CPU得到充分的利用。进程创建、进程优先级、进程通信

多道批处理系统的优缺点是什么呢?

资源利用率高:多道程序交替运行,保持CPU的忙碌状态;内存中装入多道程序提高内存的利用率;此外还提高了I/O设备的利用率。
系统吞吐量大:CPU和其他资源都保持忙碌的状态,仅当作业运行完成或者运行不下去的时候才进行切换,系统开销小。
平均周转时间长:因为作业要排队一次进行处理,所以作业的周转时间比较长,通常为几个小时或者几天。
没有交互能力:作业交给系统后,直到作业完成,用户都不能与自己的作业进行交互,修改和调试程序很不方便。

原文链接:https://blog.csdn.net/HnuWyd/article/details/80607228

 


7.操作系统我们所学的其他课程有什么关系

  操作系统管理着硬件资源、你写出来的程序也是它在调度。换句话说,应用程序从创建到装进内存、被cpu执行,以及读取硬盘数据、使用打印机等设备,一切的操作都不可能自己独立完成,都需要经过操作系统这层抽象。

 


8.什么是系统调用?它和库函数调用有什么区别?

函数库调用

系统调用

在所有的ANSI C编译器版本中,C库函数是相同的 各个操作系统的系统调用是不同的
它调用函数库中的一段程序(或函数) 它调用系统内核的服务
与用户程序相联系 是操作系统的一个入口点
在用户地址空间执行 在内核地址空间执行
它的运行时间属于“用户时间” 它的运行时间属于“系统”时间
属于过程调用,调用开销较小 需要在用户空间和内核上下文环境间切换,开销较大
在C函数库libc中有大约300个函数 在UNIX中大约有90个系统调用
典型的C函数库调用:system fprintf malloc 典型的系统调用:chdir fork write brk;

 

线程和进程的区别

1、进程是运行中的程序,线程是进程的内部的一个执行序列

2、进程是资源分配的单元,线程是执行行单元

3、进程间切换代价大,线程间切换代价小

4、进程拥有资源多,线程拥有资源少

5、多个线程共享进程的资源


实模式与保护模式

参考链接:https://www.cnblogs.com/bethunebtj/articles/4839781.html

https://zhuanlan.zhihu.com/p/42309472

1.实模式

 8086CPU数据总线为16位,也就是一次最多能取2^16=64KB数据,实模式下每个段最大只有64KB。其地址总线为20位,这样它能寻址的能力其实是2^20=1MB,这也就是实模式下CPU的最大寻址能力。

 8086CPU将1MB存储空间分成许多逻辑段,每个段最大限长为64KB(但不一定就是64KB)。这样每个存储单元就可以用“段基地址+段内偏移地址”表示。段基地址由16位段寄存器值左移4位表达,段内偏移表示相对于某个段起始位置的偏移量。

寻址方式:

段基地址+段内偏移地址

物理地址 = 段基址<<4 + 段内偏移

2.保护模式

CPU的地址线的个数也从原来的20根变为现在的32根,所以可以访问的内存空间也从1MB变为现在4GB,寄存器的位数也变为32位。所以实模式下的内存地址计算方式就已经不再适合了。所以就引入了现在的保护模式,实现更大空间的,更灵活也更安全的内存访问。

寻址方式:段选择符+段内偏移

                    图1. 逻辑地址到线性地址的转换

如图2段选择符结构,段选择符为16位,它不直接指向段,而是通过指向的段描述符,段描述符(一会介绍)再定义段的信息。

                      图2 段选择符结构

    其中TI用来指明全局描述符表GDT还是局部描述符表LDT,RPL表示请求特权级,索引值为13位,所以从这里看出,在保护模式下最多可以表示2^13=8192个段描述符,而TI又分GDT和LDT(如图3所示),所以一共可以表示8192*2=16384个段描述符,每个段描述符可以指定一个具体的段信息,所以一共可以表示16384个段。而图1看出,段内偏移地址为32位值,所以一个段最大可达4GB,这样16384*4GB=64TB,这就是所谓的64TB最大寻址能力,也即逻辑地址/虚拟地址。

图3

    下面再来看段描述符结构,段描述符表中的每一项为一个段描述符,每一项为8字节,其结构如图4所示。

好处:保护模式,实现更大空间的,更灵活也更安全的内存访问。在保护模式下需要加一些限制,而这些限制可不是一个寄存器能够容纳的,于是我们把这些关于内存段的限制信息放在一个叫做全局描述符表(GDT)的结构里。

访问权限、段基址、段限长。。

要看的参考文档

https://wenku.baidu.com/view/140b1f1bff00bed5b9f31dd4.html

Dos--->实模式
windows---->保护模式

思考:实模式在现代OS中还有什么作用?


寻址方式

系统调用的定义

  系统调用是0S与应用程序之间的接口,它是用户程序取得0S服务的惟一途径。它与一般的过程调用的区别:运行在不同的系统状态。调用程序在运行在用户态,而被调用的程序运行在系统态。通过软中断机制,先由用户态转为系统态,经分析后,才能转向相应的系统调用处理子程序;一般的过程调用返回后继续执行,但对系统调用,当调用的进程仍具有最高优先权时,才返回到调用进程继续处理;否则只能等被重新调度。

过程调用的定义

系统调用和过程调用的区别和联系

区别 

1.运行的状态不同。在程序中的过程一般或者都是用户程序,或者都是系统程序,即都是运行在同一个系统状态的(用户态或系统态)。
2.进入的方式不同。一般的过程调用可以直接由调用过程转向被调用的过程。而执行系统调用时,由于调用过程与被调用过程是处于不同的状态,因而不允许由调用过程直接转向被调用过程,通常是通过访问管中断(即软中断)进入,先进入操作系统,经分析后,才能转向相应的命令处理程序。
3.返回方式的不同。
4.代码层次不同。一般过程调用中的被调用程序是用户级程序,而系统调用是操作系统中的代码程序,是系统级程序。

联系

程序中执行系统调用或过程(函数)调用,都是对某种功能或服务的需求。

用户态和内核态

定义

内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。

用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。

死锁

进程间的通信方式和对应的同步方式,你用过吗?具体怎么用?


 

 

猜你喜欢

转载自blog.csdn.net/weixin_40760678/article/details/100057460