0简介教程简介

这个操作系统教程提供了操作系统的所有基本和高级概念。这个操作系统课程是为初学者、专业人士和GATE考生准备考试而设计的。本教程将为你提供关于每个操作系统概念的深刻知识。

什么是操作系统?

操作系统(OS Operating System)是一种软件,作为最终用户和计算机硬件之间的接口。每台计算机必须至少有一个操作系统来运行其他软件程序和应用程序,如MS Word、Chrome、游戏等。

教学大纲

? 第1课 什么是操作系统?- 解释操作系统的类型、特点和例子
? 第2课 什么是semaphore–二进制、计数类型及实例
? 第3课 操作系统的组成部分 – 解释操作系统的组成部分
? 第4课 操作系统中的微内核–结构、优势
? 第5课 操作系统中的系统调用–类型和例子
? 第6课 操作系统中的文件系统–结构、属性、类型
? 第7课 实时操作系统(RTOS)–组件、类型、例子
? 第8课 远程过程调用(RPC)协议–什么是、类型、特点、优点
? 第9课 CPU调度–操作系统中的CPU调度算法
? 第10课 操作系统中的进程管理–操作系统中的PCB
? 第11课 操作系统中的死锁 – 操作系统中的死锁介绍
? 第12课 FCFS调度算法–什么是,程序实例
? 第13课 操作系统中的分页–操作系统中的分页与实例
? 第14课 活锁–什么是活锁,实例,与死锁的区别
? 第15课 进程间通信(IPC)–什么是进程间通信?
? 第16课 圆周率调度算法–通过实例学习
? 第17课 进程同步–操作系统的关键部分问题
? 第18课 进程调度–长期、中期、短期调度器
? 第19课 优先级调度算法–抢占式、非抢占式 例子
? 第20课 操作系统中的内存管理–连续的、交换的、碎片的
? 第21课 最短作业优先(SJF)–抢占式、非抢占式示例
? 第22课 操作系统中的虚拟内存–什么是,需求分页,优势
? 第23课 操作系统中的班克算法 – 什么是班克算法?
? 第24课 Mutex vs Semaphore – 有什么区别?
? 第25课 进程与线程–有什么区别?
? 第16课 RAM(随机存取存储器)的类型–解释不同类型的RAM
? 第27课 RAM与ROM–有什么区别?
? 第28课 DDR3与DDR4–必须知道的区别
? 第29课 多线程与多处理 – 有什么区别?
? 第30课 微处理器和微控制器–有什么区别?
? 第31课 先发制人与非先发制人的调度–主要区别
? 第32课 分页与分段–主要区别
? 第33课 Zip文件软件–20个最佳Zip文件软件|解压程序|文件压缩
? 第34课 Winzip替代品 – 15个最好的免费Winzip替代品(ZIP文件软件)。
? 第35课 最好的操作系统 – 8个最好的操作系统
? 第课36 Operating System PDF – Operating System Tutorial PDF for Beginners
? 第37课 操作系统面试题–60大操作系统面试题及答案
? 第38课 操作系统测试 – 操作系统MCQ(多选题)。

为什么要学习操作系统?

  • 通过创建一个抽象来隐藏硬件的细节
  • 通过图形用户界面,易于使用
  • 提供一个环境,用户可以在其中执行程序和应用
  • 操作系统作为应用程序和硬件组件之间的中间人
  • 易于使用的形式提供计算机系统资源

操作系统的应用有哪些?

  • 安全性: 操作系统可以防止对程序和数据的未经授权的访问。
  • 控制系统的性能: 记录对服务的请求和系统的响应之间的延迟。
  • job核算: 你可以跟踪时间和资源。
  • 错误检测的辅助工具: 操作系统有助于跟踪错误信息和其他调试和错误检测的辅助工具。
  • 帮助协调其他软件之间的关系: 协调和分配编译器、解释器、汇编器和其他软件。

操作系统的特点:

下面是常见的操作系统的重要特征清单:

  • 受保护的和监督的模式
  • 允许磁盘访问和文件系统设备驱动网络安全
  • 程序执行
  • 内存管理
  • 处理I/O操作
  • 操纵文件系统
  • 错误检测和处理
  • 资源分配
  • 信息和资源保护

1操作系统简介

操作系统的历史

  • 操作系统最早是在20世纪50年代末开发的,用于管理磁带存储。
  • 通用汽车研究实验室在20世纪50年代初为他们的IBM 701实现了第一个操作系统。
  • 在1960年代中期,操作系统开始使用磁盘
  • 20世纪60年代末,Unix操作系统的第一个版本被开发出来。
  • 微软建立的第一个操作系统是DOS。它是在1981年通过购买西雅图一家公司的86-DOS软件而建立的。
  • 当今流- 行的操作系统Windows于1985年首次出现,当时创建了GUI并与MS-DOS搭配使用。

操作系统的市场占有率

注意Android实际也使用了Linux。

OS(操作系统)的类型:

  • 批量操作系统

有些计算机程序非常冗长和耗时。为了加快同一进程,具有类似类型需求的工作被分批在一起,作为一个组运行。

批量操作系统的用户从不与计算机直接互动。在这种类型的操作系统中,每个用户都在打卡机等离线设备上准备他或她的工作,并将其提交给计算机操作员。

  • 多任务/时- 间共享操作系统

时间共享操作系统使位于不同终端(shell)的人可以同时使用一个计算机系统。多个用户之间共享的处理器时间(CPU)被称为时间共享。

  • 实时操作系统

实时操作系统处理和响应输入的时间间隔非常小。例子: 军事软件系统、空间软件系统是实时操作系统的例子。

  • 分布式操作系统

分布式系统使用位于不同机器上的许多处理器,为其用户提供非常快速的计算。

  • 网络操作系统

网络操作系统运行在一个服务器上。它提供了管理数据、用户、组、安全、应用和其他网络功能的能力。

  • 移动操作系统

移动操作系统是那些专门为智能手机、平板电脑和可穿戴设备设计的操作系统。

一些最有名的移动操作系统是安卓和iOS,但其他包括黑莓、Web和watchOS。

操作系统的功能

一些典型的操作系统功能可能包括管理内存、文件、进程、I/O系统和设备、安全等。

以下是操作系统的主要功能:

  • 进程管理: 进程管理帮助操作系统创建和删除进程。它还为进程之间的同步和通信提供机制。
  • 内存管理: 内存管理模块执行向需要该资源的程序分配和取消分配内存空间的任务。
  • 文件管理: 它管理所有与文件有关的活动,如组织存储、检索、命名、共享和保护文件。
  • 设备管理: 设备管理保持对所有设备的跟踪。这个模块也负责这项任务,被称为I/O控制器。它还执行设备的分配和取消分配的任务。
  • I/O系统管理: 任何操作系统的主要目标之一是向用户隐藏该硬件设备的特殊性。
  • 二级存储管理: 系统有几个层次的存储,包括主存储、二级存储和缓存存储。指令和数据必须存储在主存储或缓存中,以便运行中的程序可以参考。
  • 安全性: 安全模块保护计算机系统的数据和信息免受恶意软件的威胁和授权访问。
  • 命令解释: 该模块解释由用户给出的命令,并操作系统资源来处理这些命令。
  • 联网: 分布式系统是一组不共享内存、硬件设备或时钟的处理器。这些处理器通过网络相互通信。
  • Job统计: 追踪不同工作和用户使用的时间和资源。
  • 通信管理: 协调和分配编译器、解释器和计算机系统各用户的其他软件资源。

操作系统(OS)的特点

这里列出了操作系统的重要特征:

  • 受保护的和监督者模式
  • 磁盘访问和文件系统
  • 程序执行
  • 内存管理 虚拟内存 多任务处理
  • 处理I/O操作
  • 文件系统的操作
  • 错误检测和处理
  • 资源分配
  • 信息和资源保护

操作系统的优势

  • 允许你通过创建抽象来隐藏硬件的细节
  • 通过GUI易于使用
  • 提供一个环境,用户可以在其中执行程序/应用
  • 操作系统必须确保计算机系统方便使用
  • 操作系统作为应用程序和硬件组件之间的中间人
  • 它以易于使用的形式提供计算机系统资源
  • 作为系统中所有硬件和软件之间的中介

操作系统的劣势

  • 如果操作系统出现任何问题,你可能会失去所有存储在系统中的内容。
  • 操作系统的软件对于小规模的组织来说是相当昂贵的,这增加了他们的负担。例如Windows
  • 它从来不是完全安全的,因为威胁可能在任何时候发生。

什么是操作系统的内核?

内核是计算机操作系统的核心部分。内核执行的唯一工作是管理软件和硬件之间的通信。内核是计算机的核心。它使硬件和软件之间的通信成为可能。内核是操作系统的最里面的部分,而外壳是最外面的部分。

内核的特点

  • 进程的低层次调度
  • 进程间通信
  • 进程同步
  • 上下文切换

内核的类型

有许多类型的内核存在,但其中最流行的两个内核是:

  • 单片式(Monolithic)

单片式内核是一个单一的代码或程序块。它提供操作系统所提供的所有必要服务。它是一个简单的设计,在硬件和软件之间创建了一个独特的通信层。

  • 微内核

微内核管理着所有的系统资源。在这种类型的内核中,服务被实现在不同的地址空间。用户服务存储在用户地址空间,而内核服务则存储在内核地址空间。因此,它有助于减少内核和操作系统的大小。

固件和操作系统的区别

固件是一种嵌入在设备的芯片上的程序,它控制着该特定的设备。操作系统提供高于固件所提供的功能。

固件是由集成电路或其他东西的制造者编码的程序,不能被改变。操作系统是可以由用户安装并可以改变的程序。
固件存储在非易失性存储器上。操作系统存储在硬盘上。

32位和64位操作系统的区别

32位允许同时进行32位的数据处理;64位允许同时进行64位的数据处理

32位应用程序需要32位操作系统和CPU。64位应用需要64位操作系统和CPU。

32位有所有版本的Windows 8、Windows 7、Windows Vista和Windows XP、Linux等。64位有Windows XP专业版、Vista、7、Mac OS X和Linux等。

32位系统被限制在3.2GB的内存。64位系统允许最大17亿GB的内存。

2信号量(Semaphore)什么是Semaphore?

Semaphore简单来说就是一个非负数的变量,在线程之间共享。信号灯是一种信号机制,一个正在等待信号灯的线程可收到另一个线程发出信号。它使用两个原子操作,1)等待,和2)信号 来实现进程同步。

信号允许或不允许对资源的访问,这取决于它是如何设置的。

信号量的特点:

  • 提供任务同步的机制。
  • 低级别的同步机制。
  • Semaphore总是持有一个非负的整数值。
  • 触发器可以使用测试操作和中断来实现,应该使用文件描述符来执行。

信号量的类型

两种常见的emaphores是

  • 计数信号
  • 二进制信号灯。

计数信号(Counting Semaphores)

这种类型的Semaphore使用一个计数,可以帮助任务被多次获取或释放。如果初始计数=0,计数信号灯应该在不可用状态下创建。

但是,如果计数大于0,那么该信号就会在可用状态下被创建。

二进制信号

二进制信号与计数信号非常相似,但是它们的值被限制为0和1。在这种类型的信号灯中,只有当信号灯=1时,等待操作才有效,而当信号灯=0时,信号操作才会成功。

实例

下面给出的程序是一个逐步实现的过程,它涉及到semaphore的使用和声明。

Shared var mutex: semaphore = 1;Process i    begin    .    .    P(mutex);    execute CS;    V(mutex);    .    .    End;

等待和信号操作等待操作

这种类型的信号操作可以帮助你控制一个任务进入关键部分的时间。但是,如果wait的值是正的,那么wait参数X的值会被递减。在负值或零值的情况下,不执行任何操作。这也被称为P(S)操作。

在信号值减少后,变成了负值,命令被搁置,直到所需条件得到满足。

Copy CodeP(S){     while (S<=0);    S--;}

信号操作

这种类型的Semaphore操作是用来控制一个任务从关键部分退出的。它有助于将参数的值增加1,表示为V(S)。

Copy CodeP(S){     while (S>=0);    S++;}

计数信号寄托与二进制信号的区别

C没有相互排斥,B相互排斥
C任何整数值,B只有0和1的值
C多于一个槽, B只有一个槽
C提供一组进程, B有一个相互排斥机制。

Semaphore与Mutex之间的区别

S是一种信令机制。M是一种锁定机制。
S是一个整数变量。M只是一个对象。
等待和信号操作可以修改一个semaphore。M只被可能请求或释放资源的进程所修改。
如果没有资源是空闲的,那么进程需要一个资源,应该执行等待操作。它应该等待,直到semaphore的计数大于0。如果它被锁定,则该进程必须等待。进程应该被保存在一个队列中。只有当mutex被解锁时,才需要访问这个队列。
S可以有多个程序线程。在mutex中拥有多个程序线程,但不能同时进行。
S值可以被任何进程释放或获得资源而改变。对象锁只能由获得该锁的进程释放。
触发器的类型有计数触发器和二进制触发器,Mutex没有子类型。
使用wait ()和signal ()操作可以修改Semaphore的值。Mutex对象被锁定或解锁。
如果所有的资源都被使用,并且请求资源的进程执行wait()操作并阻止自己,直到semaphore计数大于1,则资源被占用。如果对象已经被锁定,请求资源的进程就会等待,并在锁被释放之前被系统排队。

Semaphore的优点

  • 一个以上的线程访问关键部分。
  • 独立于机器的。
  • 在独立于机器的微内核代码中实现的。
  • 不允许多个进程进入临界区。
  • 由于在semaphore中存在繁忙的等待,因此永远不会有进程时间和资源的浪费。
  • 独立于机器的,应该在微内核的独立于机器的代码中运行。
  • 允许对资源进行灵活的管理。

Semaphore的缺点

  • 最大的限制之一是优先级倒置。
  • 操作系统必须跟踪所有调用等待和信号的semaphore。
  • 使用从未被强制执行过,只是按照惯例。
  • 为了避免semaphore的死锁,Wait和Signal操作需要以正确的顺序执行。
  • Semaphore编程是一个复杂的过程,所以有可能无法实现互斥。
  • 它也不是一种大规模使用的实用方法,因为它们的使用会导致模块化的损失。

钉钉或微信号: pythontesting 微信公众号:pythontesting