学生时代没有好好学习操作系统,悔不当初,现在重新捡起来看看,才发现日常有很多事情都可以解释了,例如为什么Linux快!并发是什么?操作系统到底干啥活,这篇blog是王道的学习笔记:

  • 操作系统基本概念,操作系统是干嘛的,提供什么服务,例如处理器管理【进程管理】、存储器管理【内存管理】、文件管理、设备管理【IO管理】
  • 操作系统的基本特征并发、共享、虚拟、异步,有了这些基本特征,操作系统才能提供如上的服务
  • 操作系统的发展历程,历史的变迁,纸带机时代、批处理时代、分时操作时代、实时操作时代
  • 操作系统的体系结构,非内核的GUI,内核的系统调用部分:进程管理、存储管理、设备管理,以及内核更底层的直接与硬件交互的时钟管理、中断处理、原语,重点介绍中断机制
  • 操作系统的调用,有用户图形界面GUI联机的CMD脱机的BAT批处理命令,还有咱写的代码做的程序调用,提到一个重点概念:系统调用

操作系统基本概念

什么是操作系统,操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和它软件方便的接口和环境,是计算机系统中最基本的系统软件,总结一下就是:

  1. 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基⽯,是计算机系统资源的总管理者:处理器管理【进程管理】、存储器管理【内存管理】、文件管理、设备管理【IO管理】
  2. 操作系统本质上是运⾏在计算机上的软件程序
  3. 操作系统为⽤户提供⼀个与系统交互的操作界⾯ ,向上层提供方便易用的服务
  4. 操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应⽤程序,⽽内核就是能操作硬件的程序)

内核负责管理系统的进程、内存、设备驱动程序、⽂件和⽹络系统等等,决定着系统的性能和稳定性。是连接应⽤程序和硬件的桥梁。 内核就是操作系统背后⿊盒的核⼼

操作系统基本特征

操作系统是一种系统软件,但与其他的系统软件和应用软件有很大的不同,他有自己的特殊性即基本特征,操作系统的基本特征包括并发、共享、虚拟和异步。并发性是之后的共享、虚拟和异步的基石。

并发

并发是指两个或多个事件在同一时间间隔内发生,在多道程序环境下,一段时间内宏观上有多个程序在同时执行,而在同一时刻,单处理器环境下实际上只有一个程序在执行,故微观上这些程序还是在分时的交替进行。操作系统的并发是通过分时得以实现的,和串行以及并行的概念区别

  • 串行顺序做不同事的能力:先洗衣服,洗完后做饭。弱鸡。
  • 并发交替做不同事的能力:一会儿洗衣服,一会儿做饭,交替执行,但快如闪电。洗衣服的是一个(cpu)做饭的是一个(cpu),所以多核的情况下会非常快,在同一个时间段内每个cpu各司其职团战。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
  • 并行同时做不同事的能力:左手洗衣服右手做饭,在同一时刻同时做两件事。单兵王。并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

核心区别:并发关注的是资源充分利用(也就是不让cpu闲下来),并行关注的是一个任务被分解给多个执行者同时做,缩短这个任务的完成时间(也就是尽快做完这件事),操作系统的并发性是指计算机系统中同时存在多个运行着的程序,因此它具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目的是使程序能并发执行。并行则是同时间同时刻有几个程序同时运行,有几核就就几个程序在并行。单核CPU只能并发多个程序,多核CPU可以并发也可以并行【4核CPU可以并行4个程序,程序大于核心时就需要用到并发性】

共享

共享,资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可以分为以下两种资源共享方式。

  • 互斥共享方式,系统中的某些资源,如打印机、磁带机,虽然他们可以提供给多个进程使用,但为使所打印的内容不致造成混淆,应规定在同时间段内只允许一个进程访问该资源。为此,当进程a访问某资源时,必须先提出请求,如果此时该资源空闲,系统便可将之分配给进程a使用,伺候若再有其他进程也要访问该资源(只要a未用完)则必须等待。仅当进程a访问完并释放该资源后,才允许另一进城对该资源进行访问。计算机系统中的大所属物理设备,以及某些软件中所用的栈、变量和表格,都属于临界资源,他们都要求被互斥的共享。
  • 同时访问方式,系统中还有一种资源,允许在一段时间内由多个进程“同时”对它进行访问。典型的可供多个进程同时访问的资源是磁盘设备,一些用重入码编写的文件也可以被“同时”共享,即若干个用户同时访问该文件。

以上所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替的对该资源进行访问即“分时共享”,并发和共享是操作系统两个最基本的特征,这两者之间又是互为存在条件的:1资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享的问题【QQ和微信如果不能并发同一时间只有一个资源也无需共享】;2若系统不能对资源共享实施有效地管理,也必将影响到程序的并发执行,甚至根本无法并发执行【QQ和微信如果不能共享则不能读取文件】。

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实的,即实际存在的;而后者是虚的,是用户感觉上的事物。相应的,用于实现虚拟的技术,成为虚拟技术。在操作系统中利用了多种虚拟技术,分别用来实现虚拟处理器、虚拟内存和虚拟外部设备

  • 虚拟处理器:在虚拟处理器技术中,是通过多道程序设计技术,让多道程序并发执行的方法,来分时使用一台处理器的。此时,虽然只有一台处理器,但他能同时为多个用户服务,是每个终端用户都认为是有一个中央处理器在为他服务。利用多道程序设计技术,把一台物理上的CPU虚拟为多台逻辑上的CPU,称为虚拟处理器。时分复用技术
  • 虚拟存储器:可以通过虚拟存储器技术,将一台机器的物理存储器变为虚拟存储器,一边从逻辑上来扩充存储器的容量。当然, 这是用户所感觉到的内存容量是虚的,我们把用户所感觉的存储器称为虚拟存储器。空分复用技术
  • 虚拟外设:还可以通过虚拟设备技术,将一台物理IO设备虚拟为多台逻辑上的IO设备,并允许每个用户占用一台逻辑上的IO设备,这样便可使原来仅允许在一段时间内有一个用户访问的设备,变为在一段时间内允许多个用户同时访问的共享设备。

因此操作系统的虚拟技术可归纳为:时分复用技术和空分复用技术

异步

在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。异步性使得操作系统运行在一种随机的环境下,可能导致进程产生于时间有关的错误。但是只要运行环境相同,操作系统必须保证多次运行进程,都获得相同的结果

操作系统的发展与分类

操作系统总共有如下几个发展阶段,按照时间线,下一个阶段的操作系统会解决上一个阶段的问题:

  • 1 手工操作阶段用纸带机,单个程序需要排队进入计算机计算,人机速度冲突,慢
  • 2 批处理阶段,批处理技术是指计算机系统对一批作业自动进行处理的一种技术。批处理阶段的特点是:用户不用与计算机直接打交道,而是通过专门的操作员来完成作业的输入输出。随着外围设备的迅速发展,后来又出现了脱机批处理系统,即主机直接与磁盘通信。操作系统出现
    • 单道批处理系统,脱机输入输出阶段,用磁带记录程序,然后用磁带读取,监督程序来控制程序读入,监督程序就是操作系统的雏形主要特点:自动性、顺序性、单道性。
    • 多道批处理系统,多道程序设计技术是指在计算机内存中同时存放几道相互独立的程序,它们在管理程序的控制下相互交替的运行。其特征是:多道,宏观上并行,微观上串行。但是不能与用户交互
  • 3 分时操作系统,所谓分时系统就是把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。若某个作业再分配给他的时间片内不能完成其计算,则改作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行,由于计算机速度很快,作业运行轮转的很快,给每个用户的感觉好像是自己独占一台计算机。但是不能确定哪个任务紧急,哪个优先级高
  • 4 实时操作系统,实时系统的主要特点是:实时性和可靠性,优先处理

还有一些其他的操作系统,例如网络操作系统和分布式计算机系统,个人计算机操作系统

操作系统体系结构

计算机系统中,通常CPU执行两种不同性质的程序,一种是操作系统内核程序;另一种是用户自编程序或系统外层的应用程序。前者是后者的管理者和控制者,因此“管理程序”要执行一些特权指令,而“被管理程序”出于安全性考虑,不能执行这些指令。所谓特权指令,是指计算集中不允许用户直接使用的指令,如IO指令、中断指令。操作系统在具体实现上划分了用户态和核心态,以严格区分两种类程序。

内核是计算机上配置的最底层软件,是计算机功能的眼神。不同系统对内核的定义稍有区别,大多数操作系统内核包括四个方面的内容

  • 最底层与硬件关联交紧密的模块,诸如时钟管理程序中断处理程序设备驱动程序等处于最底层。Linux内核,微内核体系只包含这一部分
  • 其次是运行频率较高的程序,诸如进程管理、存储器管理和设备管理等。基于Linux内核的CentOS、Ubuntu,大内核体系包含底层交互和这一部分

这两部分内容构成了操作系统的内核。它们的指令操作工作在核心态

  • 时钟管理,时钟管理有两个功能:计时,操作系统需要通过时钟管理,向用户提供标准的系统时间;进程切换,在分时操作系统中,采用时间片轮转调度的实现;在实时系统中,按截止时间控制运行的实现;在批处理系统中,通过时钟管理来衡量一个作业的运行程度等。
  • 中断处理,负责实现中断机制,提高多道程序运行环境中CPU的利用率,而且主要是针对外部设备的。后来的到发展,形成了多种类等,成为操作系统各项操作的基础。例如键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。可以说,现代计算机系统是靠中断驱动的软件。
  • 原语,按层次结构涉及的操作系统,底层必然是一些可被调用的公用小程序,他们各自完成一个规定的操作。其特点是:
    • 1.他们处于操作系统的最底层,是最接近硬件的部分
    • 2.这些程序的运行具有原子性——其操作只能一起合成
    • 3.这些程序的运行时间都较短,而且调用频繁。

系统中用来登记状态信息的数据结构很多。比如作业控制块、进程控制块、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效地管理 ,系统需要一些基本的操作,常见的操作有以下三种,依据微内核还是大内核体系区分工作在用户态和核心态:

  • 进程管理:进程状态管理、进程调度和分配、创建与撤掉进程控制块的队列维护操作等。
  • 存储器管理:存储器的空间分配和回收管理、内存信息保护程序、代码对换程序等。
  • 设备管理:缓冲区管理、设备分配和回收等。

从上述内容可以了解,核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。

用户态和核心态

根据进程访问资源的特点,我们可以把进程在系统上的运⾏分为两个级别:

  1. ⽤户态(user mode) : ⽤户态运⾏的进程或可以直接读取⽤户程序的数据。
  2. 核心态(kernel mode):可以简单的理解核心态运⾏的进程或程序⼏乎可以访问计算机的任何资源,不受限制

用户态和核心态的调用切换是需要CPU切换的,是会消耗资源的。

特权指令

所谓特权指令是指有特殊权限的指令,由于这类指令的权限最大,如果使用不当,就会破坏系统或其他用户信息。为了保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用,主要用于系统资源的分配和管理,包括改变系统的工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表等。在某些用户的计算机系统中,为了统一管理各种外部设备,输入输出指令也作为特权指令,不允许用户直接使用。需要输入输出操作时,必须通过系统调用,经由操作系统完成

为了防止用户系统中使用特权指令,用户态下只能使用除特权指令以外的指令,核心态下可以使用全部指令。所以把用户程序放在用户态下进行,而操作系统中必须使用特权指令的那部分程序在核心态下运行,保证了计算机系统的安全可靠。从用户态转换为核心态的唯一途径就是终端或异常

大内核和微内核

大内核例如Linux、Unix系统,包含底层硬件交互的:原语、时钟管理、中断和系统调用类指令【进程管理、存储器管理、设备管理】等功能:

  • 优点:高性能,CPU不需要频繁的切换用户态和内核态
  • 缺点:包含模块多,内部结构混乱,不易维护

微内核例如windows系统,只包含底层硬件交互的:原语、时钟管理、中断部分模块,其它系统调用类指令都在用户态

  • 优点:包含模块少,内部结构清晰,容易维护
  • 缺点:需要频繁在核心态和用户态之间切换CPU,性能低

CPU的状态转换是有成本的,所以频繁切换对性能有很高的影响

操作系统的中断

中断是让操作系统从应用程序手中夺回CPU控制权的唯一方式

  • 内中断:内中断、例外或陷入。指源自CPU执行指令内部的时间,如程序的非法操作码、地址越界、算数溢出、虚存系统的缺页以及专门的陷入指令等引起的时间。对异常的处理一般要依赖与当前程序的运行现场,而且异常不能被屏蔽,一旦出现异常立即处理
  • 外中断:与当前CPU执行的指令无关,指令来自CPU执行指令以外的事件发生,例如时钟中断IO中断

时钟+外中断组合起来是分时复用CPU的基石,中断处理依赖中断向量表,当中断发生时找到对应中断向量表确认执行哪种中断。

操作系统的调用

调用操作系统,也就是和操作系统交互一般有如下四种调用方式,区分为用户直接调用软件/程序员间接调用,用户有三种直接和操作系统交互的方式,

  • GUI用户图形界面,也就是window可视化的操作系统
  • 联机命令接口,也就是我们的CMD小黑窗,可以一行行的敲的即时指令
  • 脱机命令接口,也即批处理命令接口,我们安装的服务器,经常能看到的bat格式的文件,就是一批指令的集合文件

软件/程序员有一种方式可以调用

  • 程序接口:通过写代码进行调用,例如我们使用C语言使用的库函数printf,而printf的实现调用了操作系统的相关接口,调集了显示器内存等资源最终把内容打印在屏幕上

调用这里有一些区分,在程序接口调用的时候有一个概念叫做系统调用

系统调用

我们运⾏的程序基本都是运⾏在⽤户态,如果我们调⽤操作系统提供的核心态级别的⼦功能,就需要系统调⽤了

在我们运⾏的⽤户程序中,凡是与共享资源有关的操作(如⽂件管理、进程控制、内存管理、文件管理等),都必须通过系统调⽤⽅式向操作系统提出服务请求,并由操作系统代为完成。这些系统调⽤按功能⼤致可分为如下⼏类:

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

这样可以保证系统的稳定性和安全性。系统调用有以下流程:

  • 执行传参指令,将系统调用需要参数传递,发现特权指令
  • 执行陷入指令,引发内中断,因此转入内中断相应处理程序,也就是系统调用入口
  • CPU切换到核心态
  • 依据参数执行系统调用,执行特权指令,执行完成
  • CPU转回用户态

系统调用结束,可以看的出,这里用到了内中断

【操作系统基础知识 一】操作系统基本原理相关推荐

  1. 操作系统基础知识:操作系统简介、Windows简介、Linux简介

    文章目录 操作系统定义 操作系统主要功能 处理器管理 存储器管理 设备管理 文件管理 作业管理 操作系统分类 Windows 发展史 版本更新 Windows简易架构 特点 Linux 发展史 系统架 ...

  2. IT:银行类金融科技岗笔试习题集合—各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理)

    IT:银行类金融科技岗笔试习题集合-各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理) 导读:因为博主后台留言太 ...

  3. 计算机基础和操作系统基础知识测试,计算机基础知识和操作系统.doc

    全国计算机等级考试精讲·精解·精练--二级C 第1章 计算机基础知识与操作系统 · PAGE 2· · PAGE 33· 技术资料 共享知识 第1章计算机基础知识与操作系统 大纲要求 了解计算机的有关 ...

  4. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

  5. 计算机的基础操作知识试题,[计算机基本操作知识]计算机操作系统基础知识试题...

    计算机操作系统是电子计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,那么你对计算机操作系统了解多少呢?以下是由答 案 网 ZqNF.Com小编整理关于计算机操作系统基础知识试题的内容, ...

  6. 计算机和操作系统基础知识

    -----------------------siwuxie095 计算机和操作系统基础知识 1.操作系统(Operating System,简称 OS),是管理计算机硬件与 软件资源的计算机程序,同 ...

  7. 软件评测师:操作系统基础知识(一)

    软件评测师:操作系统基础知识(一) 文章目录 软件评测师:操作系统基础知识(一) 前言 一.操作系统概述 1.操作系统的位置 2.操作系统的作用 3.操作系统的分类 二.P.V.S机制 1.基础概念 ...

  8. 软考 程序员教程-第二章 操作系统基础知识

    软考 程序员教程-第二章 操作系统基础知识 第二章 操作系统基础知识 2.1.操作系统概述(第四版教程P44) 操作系统的4个特征:并发性.共享性.虚拟性.不确定性. 操作系统的5个功能:处理机管理. ...

  9. Linux(一)操作系统基础知识

    Linux操作系统基础知识 1.Linux简介与程序开发环境 1.1 什么是Linux? Linux是一个可以自由发布的类UNIX内核实现,它是一个操作系统的底层核心.Linux是由芬兰赫尔辛基大学的 ...

  10. 奉劝那些刚参加工作的学弟学妹们:这些计算机与操作系统基础知识越早知道越好!万字长文太顶了!!(建议收藏)

    大家好,我是冰河~~ 最近发现很多小伙伴工作很久了,大部分工作都是在重复的进行CRUD,对于一些基础性的知识,比如:计算机基础知识,操作系统,数据结构和算法等,却了解的少之又少.其实,很多时候,这些基 ...

最新文章

  1. Java多线程之Callable接口的实现
  2. 执行脚本出现以下问题怎么办?
  3. 派森编程软件python-派森Python
  4. 阿里云安装mysql5.6_yum安装mysql 5.6-阿里云开发者社区
  5. 《数据库原理与应用》(第三版)第12章 函数和游标 基础 习题参考答案
  6. 74. Search a 2D Matrix
  7. Flutter 底部弹框 showModalBottomSheet 使用Demo
  8. 排序算法-快速排序(入门)
  9. 陷阱:使用==来比较原始的包装器对象,如Integer
  10. Fiddler(Web/HTTP调试利器)
  11. Filter过滤器|敏感词汇过滤
  12. Node.js及Express的下载、安装和配置教程
  13. 谷歌浏览器调试工具使用进阶(二)
  14. Android Protect-0.重新打包和签名
  15. OpenHarmony代码操作总结
  16. dotnet Multi-platform App UI 多平台应用 UI 框架简介
  17. Wise Duplicate Finder(重复文件查找工具)v1.2.9.40中文免费版
  18. 2022 年度作品优秀大赏 | 开发者说·DTalk
  19. 算法的时间与空间复杂度介绍
  20. 记阿里笔试2020.3.23惨痛经历

热门文章

  1. setsockopt()函数 参数详解 转自: 老鱼_新浪博客
  2. STZ诱导的糖尿病模型的优点 应用最广泛的STZ诱导的糖尿病模型是在小鼠中 诱导的
  3. C语言str系列库函数
  4. 销售分析怎么做?掌握3个思路,让你“躺平”秒变“躺赢”
  5. typescript typeof 和 keyof
  6. sencha touch 功能简介
  7. C#丨DataGridView使表格充满整个控件
  8. 新概念2 课文和单词(16)
  9. Win10电脑的WLAN消失的故事
  10. CASA——估算陆地生态系统植被净初级生产力(NPP)的经典模型