操作系统定义:
操作系统是一组 控制和管理 计算机硬件 与 软件资源,合理地对各类作业进行调度,以及方便用户使用的程序集合。
操作系统是一组 控制和管理 计算机硬件 与 软件资源,合理地对各类作业进行调度,以及方便用户使用的程序集合。
操作系统是一组 控制和管理 计算机硬件 与 软件资源,合理地对各类作业进行调度,以及方便用户使用的程序集合。
分析:
控制和管理——进程管理
计算机硬件——设备管理、存储管理
软件资源——文件管理、存储管理
作业进行调度——进程管理
方便用户使用——提供用户接口[命令接口、程序接口、图形接口]
操作系统是一组程序集合。
tips:双击图片看大图更清晰哦!
操作系统定义:操作系统是一组控制和管理计算机硬件与软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。
计算器所有的操作都是由处理器指令【又称为机器指令或计算机指令】所决定的。
指令结构
每条机器指令都必须包含:操作码、源操作数、目的操作数、下一条指令地址。
寻址方式
指令寻址方式:顺序寻址方式、跳跃寻址方式。
数据寻址方式:隐含、立即、直接、间接、寄存器寻址和寄存器间接寻址、相对、基址、变址、块。
寄存器
寄存器是CPU的组成部分,用于暂存指令、数据和地址。
寄存器分类:数据、地址、通用目的、浮点、常数、向量、特殊目的、指令、索引
X86寄存器分类:通用寄存器、指令指针、标志寄存器、段寄存器。
处理器特权级
目态:又称用户态,是用户程序执行时处理器所处的状态。
用户态运行的程序只能受限地访问内存,只能直接读取用户程序的数据,并且不允许访问外围设备。用户态下的 CPU 不允许独占,也就是说 CPU 能够被其他程序获取。
管态:又称系统态、核心态,是操作系统管理程序运行时所处的状态。
内核态运行的程序可以访问计算机的任何数据和资源,不受限制,包括外围设备,比如网卡、硬盘等。处于内核态的 CPU 可以从一个程序切换到另外一个程序,并且占用 CPU 不会发生抢占情况。
存储系统是指计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备【硬件】和算法【软件】所组成的系统。
制约计算机存储器设计的因素主要有三个:容量、速度和价格。它们的关系是:
速度越快,价格每位越高、容量配置越小。速度越慢,价格每位越低、容量配置越大。
多级层次存储器:CPU内寄存器、高速缓冲存储器[L1/L2/L3]、主存储器[内存]、辅助存储器[磁盘等]。
高速缓冲存储器Cache
高速缓冲存储器通常由高速存储器【存放指令与数据】、联想存储器【地址转换】、置换逻辑电路【置换算法】和相应的控制线路组成。
内存
内存又称内存储器或主存储器。分为随机存储器【RAM】和只读存储器【ROM】。
堆栈
堆栈是C语言程序运行时的一个记录调用路径和参数的空间:功能包括函数调用框架、传递参数、保存返回地址一提供局部变量空间。函数调用过程中需要使用到堆栈。
磁盘
磁盘是最常用的外表存储器。比喻为电脑储存数据和信息的仓库。
非易失性存储
非易失性存储【NVM】特性:高集成度、低能耗、非易失性、字节寻址等。
局部性原理
局部性原理是指CPU访问存储器时,无论是存储指令还是存取数据,所访问的存储单元都聚集在一个较小的连续区域中。
局部性分为时间局部性、空间局部性。现代计算机的各个层次,从硬件到操作系统,再到应用程序,它们的设计都利用了局部性原理。
在硬件层:局部性原理允许计算机设计者通过引入小而快速的高速缓冲存储器来保存最近被使用到的指令和数据项,从而提高对主存的访问速度。
在操作系统层:局部性原理允许系统使用主存作为虚拟地址空间最近被引用的高速缓存,允许系统利用主存来缓存磁盘文件系统中最近被使用的磁盘块。
在应用程序层:局部性原理允许应用程序将最近引用的数据或文档存储到高度缓存中或本地磁盘中。
程序运行中,如果系统外部、内部或当前程序本身出现紧急事件,则处理器将暂停当前程序的运行,自动转入相应的处理程序【中断服务程序】处理新情况,待处理完后再返回原来被暂停的程序继续执行。这个过程称为中断。
中断
中断作用:“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。“中断”是让操作系统内核夺回CPU使用权的唯一途径。
中断目的:提高计算器系统效率、维持系统可靠正常工作、满足实时处理要求、提供故障现场处理手段。
中断分类:中断【一般异步,由硬件随机产生,在程序执行的任何时候都可能出现】、异常【一般同步,在特殊或出错的指令(陷入trap、故障fault、终止abort)执行时由CPU控制单元产生】、外中断【如时钟中断、I/O中断请求】
中断向量:每个中断和异常都有一个唯一的标识号。
中断描述符表【IDT】:也称中断向量表,用于将每个中断和异常分别与它们的处理程序联系起来。
中断实现基本原理:
step1:检查中断信号:在执行指令时检查异常、每个指令周期末尾检查是否有外中断。
srep2:根据中断描述符表找到相应的中断处理程序。
系统时钟
计算机中很多活动都是由定时测量来驱动的——系统时钟。
系统时钟分类:实时时钟【RTC】、时间戳计数器【TSC】、可编程间隔定时器【PIT】
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用
每种操作系统都有几百种系统调用,因此也 [系统调用入口表] 根据 [系统调用号] 将每个系统调用和 [系统调用服务例程] 联系起来。
由于应用程序运行在用户态,而系统调用服务例程运行在内核态,因此应用程序不能直接调用内核的服务例程,而是通过执行一条叫做“访管指令”的机器指令来实现调用,这条指令的功能是引发一个编程异常【软中断】,促使CPU运行状态从用户态切换到系统态。
用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。
内核态→用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用按功能分类
进程控制:完成进程的创建/撤销/阻塞/唤醒等功能。
进程通信:完成进程之间的消息传递/信号传递等功能。
文件管理:完成文件的读/写/创建/删除等功能。
内存管理:完成内存的分配/回收等功能。
设备管理:完成设备的请求/释放/启动等功能。
进程是具有一定独立功能的程序关于某个数据集合的一次运行过程,是系统进行资源分配和调度的一个独立单位。
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
多个进程在共享临界资源时,必须以互斥方式共享,把每个进程中访问临界资源的那段代码称为临界区。为实现多个进程互斥地进入临界区,系统必须设置同步机制。进程同步是指相互合作的进程需要按照一定的先后顺序执行,以顺利的完成共同任务。
在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。进程调度,即处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程 的并发执行。
并发执行的进程之间通常需要进行信息交换,称为进程通信。
进程同步机制实际上就是一种进程通信方式,只不过这种通信方式由于交换的信息量少且效率较低,故又称为低级通信方式。
高级通信方式是指童虎可直接利用操作系统提供的一组通信命令(原语),高效地传送大量数据的一组通信方式。
操作系统隐藏了进程通信的具体实现细节,从而大大降低了通信程序编程上的复杂程度。
高级通信方式分为四大类:
1、共享存储器系统通信。——类似java的通过共享内存来实现通信。
2、消息传递系统通信。——类似MQ。
3、管道通信系统。——类似Go语言的channel。
4、客户-服务器系统通信。 ——即CS模式,主要有socket套接字和RPC远程过程调用。
若系统中存在一组进程(两个或两个以上),且它们中的每个进程都无限等待被该组的另一个进程所占用且永远无法释放的资源,则发生了死锁。进程死锁是指多个进程之间相互循环等待的僵持现象。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。
调度:进程是资源分配的基本单位,线程是调度的基本单位。
并发性:多个进程可以并发,一个进程中的多个线程也可以并发。并发度提高,系统吞吐量更高。
拥有资源:进程是资源分配的基本单位,线程只拥有很少的资源[],但它可访问进程的所有资源。
系统开销:相比创建进程,创建线程只需要较少的开销。
不同操作系统实现线程的方式不同,通常由三种:用户级线程、内核级线程、前两者的组合模式
用户级线程(User-Level Thread,ULT):用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责(包括线程切换)。“用户级线程”就是“从用户视角看能看到的线程”。
内核级线程(Kernel-Level Thread,KLT):内核级线程的管理工作由操作系统内核完成。 线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。“内核级线程”就是“从操作系统内核视角看能看到的线程”。
操作系统只“看得见”内核级线 程,因此只有内核级线程才是处理机分配的单位。
一对一:一个用户级线程映射到一个内核级线程。优:并发度高。缺:线程管理都需要切换到内核态,开销大。
多对一:多个用户级线程映射到一个内核级线程。优:开销小。缺:系统调用会发生阻塞,并发度小。
多对多:用户及线程映射到 m 个内核级线程。集二者之长。
这里所述的存储器主要是操作系统运行时使用的存储器——内存,存储器管理即内存管理,其主要任务是为多道程序的运行提供良好的环境,方便用户使用内存,提高内存的利用率,保障内存使用的安全性,并能从逻辑上对内存进行容量扩充,以满足需要。
用户编写的源程序并不能直接装入内存执行,必须经过编译生成若干目标模块,然后再将这些目标模块与所需要的库模块链接,生成一个可以装入内存执行的程序。如下图,执行前由装入程序将可执行程序装入内存并创建进程,再经过进程调度而运行。
存储器管理在这里指内存管理。包括连续存储器管理和非连续存储管理。
虚拟存储器(Virtual Memory,VM,即虚拟内存)是指具有请求调入功能和置换功能,能够利用外存储器的空余空间从逻辑上对内存容量进行扩充的一种存储器系统。
设备管理主要是为了完成用户进程提出的I/O请求,为用户进程分配I/O设备;并提高CPU与I/O设备的利用率,提高I/O操作的速度,方便用户使用设备。
设备管理主要包括设备分配、设备处理、缓冲管理。
文件系统管理是指被管理的文件、对文件进行管理的一组软件集合以及实现管理功能所需要的数据结构的总体。它具有存储空间管理、目录管理、逻辑地址到物理地址映射、文件读写、文件共享和保护等功能。并为用户提供命令、程序和图形三种接口。
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。
其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
本篇文章操作系统知识结构图与相关图片:
https://download.csdn.net/download/qq_41822345/86754334