[操作系统]概述
文章目录
1.基本特征
1.1并发
并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。
并行需要硬件支持,如多流水线(流水线技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术)、多核处理器或者分布式计算系统。
操作系统引入进程和线程,使得程序能够并发运行。
1.2共享
共享是指系统中的资源可以被多个并发进程共同使用。
两种共享方式:互斥共享和同时共享。
互斥共享的资源称为临界资源,例如打印机等,在同一时刻只允许一个进程访问,需要用同步机制来实现互斥访问。
1.3虚拟
虚拟技术把一个物理实体转换为多个逻辑实体。
主要有两种虚拟技术:时(时间)分复用技术和空(空间)分复用技术。
多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。
虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间,地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
1.4异步
异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。
2.基本功能
2.1进程管理
进程控制、进程同步、进程通信、死锁处理、处理机调度等。
2.2内存管理
内存分配、地址映射、内存保护与共享、虚拟内存等。
2.3文件管理
文件存储空间的管理、目录管理、文件读写管理和保护等。
2.4设备管理
完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率。主要包括缓冲管理、设备分配、设备处理、虚拟设备等。
3.系统调用
如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。
用户态指非特权状态,在此状态下,执行的代码被硬件限定,不能进行某些操作。
核心态也被称为特权态,是操作系统内核所运行的模式,运行在该模式下的代码,可以无限制的对系统存储、外部设备进行访问。
Linux的系统调用主要有:
Task | Commands |
---|---|
进程控制 | fork();exit();wait(); |
进程通信 | pipe();shmget();mmap(); |
文件操作 | open();read();write(); |
设备操作 | ioctl();read();write(); |
信息维护 | getpid();alarm();sleep(); |
安全 | chmod();umask();chown(); |
- 当系统调用时进入核心态。Linx对硬件的操作只能在核心态,这可以通过写驱动程序开控制,在用户态操作硬件会造成core dump;
- 要注意区分系统调用和一般的函数。系统调用由内核提供,如read()、write()、open()等,而一般的函数由软件包中的函数库提供,如sin()、cos()等,在语法上两者没有区别;
- 一般情况下,系统调用运行在核心态,函数运行在用户态,但也有一些函数在内部使用了系统调用(如fopen),这样的函数在调用系统调用时进入核心态,其他时候运行在用户态。
用户态切换到内核态的3种方式:
- (1)系统调用。这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现;
- (2)异常。当CPU在执行运行用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,如缺页异常;
- (3)外围设备的中断。当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要运行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换,如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后序操作等。这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备则是被动的。
上下文关系
处理器总处于以下状态中的一种:
- (1)内核态,运行于进程上下文,内核代表进程运行于内核空间;
- (2)内核态,运行于中断上下文,内核代表硬件运行于内核空间;
- (3)用户态,运行于用户空间。
用户空间的应用程序,通过系统调用,进入内核空间。这个时候用户空间的进程要传递很多变量、参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存器、变量等。“进程上下文”可以看作是用户进程传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。
硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这个参数进行中断处理。“中断上下文 ”可以看作是硬件传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被打断执行的进程环境)。
4.大内核和微内核
4.1大内核
大内核是将操作系统功能作为一个紧密结合的整体放到内核。
由于各模块共享信息,因此有很高的性能。
4.2微内核
由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性,移出的部分根据分层的原则划分成若干服务,相互独立。
在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。
因为需要频繁的在用户态和核心态之间进行切换,所以会有一定的性能损失。
5.中断分类
5.1外中断
由CPU执行指令以外的事情引起,如I/O完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求;此外还有时钟中断、控制台中断等。
5.2异常
由CPU执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。
5.3陷入
在用户程序中使用系统调用。