计算机操作系统(一)概述

227 阅读5分钟

第一章 操作系统概述

1. 什么是操作系统?

image.png

用户想让软件运行在计算机硬件上,必须要借助操作系统。

  1. 一种最接近硬件的一层软件,最底层的软件
  2. 是系统资源的管理者,负责管理协调硬件,软件等资源的工作
  3. 为上层用户或者应用程序提供简单易用的服务
  4. 为其他软件提供服务,操作系统与软件进行交互,以便为其分配运行所需的任何必要资源。

2. 操作系统的主要功能

  1. 进程管理:进程同步、进程通信、进程死锁等等。
  2. 内存管理:内存分配、虚拟内存、地址映射等等。
  3. 文件管理:存储空间管理,文件读写管理和保护等等。
  4. 设备管理:设备分配、虚拟设备等等。

操作系统将计算机分为了两种状态:用户态和内核态

内核态封装了一些底层的代码,避免了一些软件会恶意的损害操作系统,如果进程在用户态运行的时候需要使用内核态的功能,就需要进行系统调用陷入内核状态,由操作系统代为完成。

3. 为什么要区分用户态和内核态?

  1. 安全性:防止用户程序恶意或者不小心破坏系统/内存/硬件资源;
  2. 封装性:用户程序不需要实现更加底层的代码;
  3. 利于调度:如果多个用户程序都在等待键盘输入,这时就需要进行调度;统一交给操作系统调度更加方便。

用户态运行的进程或可以直接读取用户程序的数据

内核态运行的进程几乎可以访问计算机的任何资源

4. 什么是系统调用?和库函数的区别是啥

  1. 平常使用的软件都是运行在用户态,如果这些软件需要执行操作系统提供的内核态的功能(比如说文件、进程、内存管理等等)都必须通过系统调用方式向操作系统代为完成。这个过程涉及到用户态和内核态的切换,开销比较大。

  2. 库函数:是将一些常用的函数编写完放到一个文件里,这样用户编写应用程序时调用,一般由第三方提供,发生在用户地址空间。比如说Java中的类库。

常见的系统调用:

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。
  • 文件管理。完成文件的读、写、创建及删除等功能。
  • 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
  • 进程通信。完成进程之间的消息传递或信号传递等功能。
  • 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。

Linux 的系统调用主要有以下这些:

TaskCommands
进程控制fork(); exit(); wait();
进程通信pipe(); shmget(); mmap();
文件操作open(); read(); write();
设备操作ioctl(); read(); write();
信息维护getpid(); alarm(); sleep();
安全chmod(); umask(); chown();

5. 计算机是如何完成用户态和内核态的切换?

中断是CPU从用户态切换到内核态的唯一途径,发生中断的本质就是需要操作系统介入进行管理工作,使操作系统获得计算机的控制权,有了中断,才能实现多道程序并发执行。

当中断发生时:

  1. 当中断发生时,CPU立即进入核心态
  2. 当中断发生后,当前运行的进程暂停进行,由操作系统内核对中断进行处理
  3. 对于不同的中断信号,会进行不同的处理。

中断也分为不同的种类:

  1. 外中断:
  2. 内中断:信号的来源是CPU内部

6. 并发和并行的区别?

并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。

并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。

操作系统通过引入进程和线程,使得程序能够并发运行。

7. 异步和同步的区别?

同步,是所有的操作都做完,才返回给用户结果。

异步,不用等所有操作都做完,就相应用户请求。

8. 什么是虚拟技术?

虚拟技术把一个物理实体转换为多个逻辑实体。

主要有两种虚拟技术:时(时间)分复用技术和空(空间)分复用技术。

多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。

虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。

虚拟内存技术本质上就是内存分时复用,可以使程序在远小于它的内存空间运行。