计算机操作系统和进程

这篇具有很好参考价值的文章主要介绍了计算机操作系统和进程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器

✨个人主页:bit me👇
✨当前专栏:Java EE初阶👇
✨每日一语:心平能愈三千疾,心静可通万事理。

🐬一. 操作系统

🍦1. 操作系统是什么?

  • 操作系统是一组做计算机资源管理的软件的统称

目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等

🍨2. 操作系统的两个核心功能:

  • 防止硬件被时空的应用程序滥用;(对下,要管理各种硬件设备)

  • 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。(对上,要给各种软件提供稳定的运行环境)

🍧3. 操作系统软硬件结构图

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器

  • 操作系统内核是操作系统最核心的功能部分
  • 系统调用:操作系统给应用程序提供的 API 接口,就比如你想往控制台打印一个 " hello " 这个过程你需要调用 printf.(库函数) 内部就要调用操作系统提供的系统调用 write,调用 write 就会进入到内核来执行,内核的话就要进一步的控制硬件,完成输出过程
  • 当我们使用系统调用进入操作系统内核的时候,就会涉及到 用户态 到 内核态 之间的切换,由于内核只有一个,应用程序有很多,这些程序都需要靠我们的这个操作系统内核来提供工作支持,很可能就要排队等待
  • 驱动程序:软件,是由硬件厂商提供的软件程序,直接和硬件设备打交道(硬件一般都会提供一些 " 寄存器 "),驱动程序相当于在 硬件 和 内核 之间来了一层转换

 

🐋二. 进程

📙1. 什么是进程/任务(Process/Task)?

  • 一个程序,运行起来,完成一系列任务的模样

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;

注:

  • 进程和程序(可执行文件)之间的区别

打开任务管理器,里面的 QQ 是跑起来的模板,这是一个进程,是动态的,被加载到内存中的

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器

在我们的电脑中找到 QQ 文件安装的位置,找到 Bin 目录里的 QQ.exe 文件,这是一个可执行文件,是静态的,躺在硬盘上的

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器

一个计算机的硬盘上可能会躺着很多的可执行文件,同一时刻,可能只有一小部分在运行(变成了进程)

  • 一个可执行文件,是 " 静态的 " ,当我们双击运行的时候,操作系统就会把这个可执行文件中的关键信息加载到内存中,并且开始运行里面的代码,就形成了一个进程.

📘2. 进程管理

一个操作系统上,同时跑着这么多进程,就需要操作系统来安排他们

管理:

  1. 先描述:使用一个类 / 结构体,把这个东西有啥特征,都表示出来
  2. 再组织:使用一个数据结构,把很多个这样的对象 / 结合体给整理到一起

结构体:进程管理是操作系统内核的功能,操作系统又是 C 语言实现的,C 语言的结构体就是低配的类.

📗3. PCB(进程控制块)

  • 就是一个结构体,这个结构体里就包含了一些表示进程的核心信息

操作系统内核中,就把若干 PCB 串成了一个双向链表

PCB 里面都有啥信息?

最好的办法还是看看操作系统内核的源码

    1. 进程的身份标识 pid (学号)

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器

    1. 内存指针

操作系统要把一些必要的数据加载到内存中(必要的数据:有些是要运行的指令(代码),有些是运行时依赖的数据(全局变量))

内存指针就描述了:该进程的内存中哪些部分是指令,哪些部分是数据

    1. 文件描述表

表示了当前进程都打开了哪些文件

在代码中打开一个 fopen 就会在进程的文件描述符表 (顺序表) 里给这个文件分配一个表项。每个元素就代表一个打开的文件,对应的数组下标就是 " 文件描述符 "。

内存指针 和 文件描述表 描述了进程持有哪些系统的资源,也认为 进程 是操作系统中 " 资源分配 " 的基本单位

📕4. 进程的调度

进程里有一组比较关键的属性,用来实现进程的调度

  • 进程状态的优先级
  • 进程的状态
  • 进程的记账信息
  • 进程的上下文

本质问题:当前计算机,CPU 是有限的,但是进程数量是比较多的,例如 CPU 核心数只有 6 核,进程数量非常多,几十个,几百个,这就形成了狼多肉少的局面,操作系统是要做到尽可能的公平,让每个狼都有吃肉的机会,就需要进行调度

那么如何调度呢?轮流吃!

  • 并发式执行:宏观上同时执行,微观上不是同时执行

CPU 主频是1.9 Ghz,1s 有 19 亿个时钟周期,人是感知不到的,站在宏观的角度来看,好像这些进程是在同时进行,微观上并不是同时,而是 " 轮流 " 的方式占用 CPU 执行

  • 并行式执行:宏观上同时执行,微观上也是同时执行

CPU 上有多个核心,每个核心上都可以跑一个进程,某一时刻两个进程就是在两个 CPU 上同时执行的

实际开发中,并不会对这俩概念做明确的区分,往往使用 " 并发 " 概括表示 " 并发 " 和 " 并行 " 。–> " 并发编程 "

进程状态的优先级:安排时间表的时候先排谁,后排谁。

进程的状态:安排时间表的时候要考虑到每个人当前特定的情况。

两种比较典型的状态:

  • 就绪状态:进程是准备就绪的,随时可以在 CPU 执行
  • 阻塞状态:进程在等待某个任务完成(读写磁盘),完成之后才能上 CPU,完成之前就没办法继续执行

进程的记账信息:安排时间表的时候,就要考虑到一些历史记录,操作系统在安排进程的时候,也会记录每个进程以往在 CPU 上执行的时间,如果发现某个进程被安排的太少,就会适当的调整策略。(不一定是以执行指令为单位,也可能是以执行的指令数为单位)

进程的上下文:对于进程来说,上下文,具体指的就是 CPU 里的一堆寄存器里的值,上下文就会在进程被切出 CPU 的时候,把寄存器的状态保存到 PCB里(内存),下次进程回到 CPU 上就把 PCB 里的上下文读取出来,恢复到 CPU 寄存器中。

类似于我们打游戏,存档和读档,存档保存的信息,就是我上次退出游戏之前的状态,就是这个 " 上下文 "。

📒5. 进程的虚拟地址空间

进程,需要使用一些系统资源,其中内存资源,就是一个很关键的资源

每个进程都希望用自己的内存,互相不干扰,但是在 C语言 中有一个操作,叫做指针解引用,解引用的时候需要保证这个指针里面包含的地址,指向的是我们弄的合法地址,但是指针也可能指向错误,把别的进程弄挂了,这种行为就会让整个操作系统都很不稳定(操作系统要给应用程序提供稳定的运行环境)。

为了让各个进程之间不要相互干扰,操作系统就引入了 “虚拟地址空间” 这样的概念,每个进程都只能访问到自己的地址空间,相互之间不会有影响了,哪怕你指针指错,操作系统也能及时发现,不会影响到其他的进程,就算出问题,问题也被限制到进程的内部了。

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器
比如进程3里面,*p = xxx,p 成了野指针指到错误的地址上了,进行操作 p 指向的内存的时候需要进过 MMU 进行映射,MMU 就知道当前访问的是一个有问题的地址,于是就会向操作系统告状,有进程访问内存错了,操作系统就会给对应的进程发一个 " 信号 "(这个信号的默认处理行为就是让程序终止运行),告诉他你的内存访问出错。

因为虚拟地址空间,进程就有了一个重要的特征:隔离性

每个进程都有一个 " 虚拟地址空间 " ,一个系统里面里的进程又有那么多,这些虚拟地址空间加到一起,比物理内存大了可咋办?

实际上:

  • 同一时刻执行的进程没几个
  • 即使同一时刻,有好几个进程在跑,这些进程也不是同时把所有的虚拟地址空间使用上了。(虽然每个进程的虚拟空间很大,但是实际使用的内存就只有一小部分,物理内存只需要把真实使用的这部分内存数据给表示出来即可)
  • 极端情况下,确实同时跑的这几个进程同时吃了很多的真实内存,确实是会导致物理内存不够(出现这种情况,算 bug,因此程序猿就需要想办法优化一下内存占用,或者扩容换一个内存更大的机器)

📔6. 进程间通信

进程引入了隔离性,确实让系统更稳定了,但是也有别的问题,多个进程之间想要配合工作,就麻烦了,操作系统又引入了 " 进程间通信 ",在隔离性的前提下,开了个口子,让多个进程之间能相互通信

操作系统提供的进程间通信方式有很多种,但是本质上都是一样的!!!搞一个多个进程之间都能访问到的公共资源,借助公共资源来进行通信!!

操作系统上的程序 与 进程,Java EE初阶,linux,运维,服务器
在后面网络编程中会更加详细提及,网络通信本质上也是一种进程间通信!而且是现在最主要的使用方式。文章来源地址https://www.toymoban.com/news/detail-816694.html

到了这里,关于计算机操作系统和进程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机操作系统【慕课版】习题答案(第2章进程的描述与控制)

    一:简答题 (1).什么是前趋图?试画出下面四条语句的前趋图. S1:a=x+y; S2:b=z+1; S3:c=a-b; S4:w=c+1; 答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(DirectedAcyclicGraph),用于描述进程之间执行的前后关系。 (2)什么是进程? OS中为什么要引入进程?它会产生什么样的

    2024年04月13日
    浏览(27)
  • 实现时间片轮转算法(模拟)计算机操作系统实验5:进程调度算法模拟-RR

    实验内容: 实现时间片轮转算法(模拟),要求如下: 1、用到的数据结构 /* PCB / struct PCB { pid_t pid;//进程 PID int state; //状态信息,1 表示正在运行,0 表示暂停,-1 表示结束 unsigned long runned_time;//已运行时间 unsigned long need_running_time;//剩余运行时间 }; / PCB集合 */ struct PCB pcb[TOT

    2024年02月04日
    浏览(44)
  • 操作系统 --- 计算机系统引论

            操作系统 ( Operating System , OS )是指控制和 管理 整个计算机系统的 硬件和软件 资源,并合理地组织调度计算机的工作和资源的分配;以 提供给用户和其他软件方便的接口和环境 ;它是计算机系统中最基本的 系统软件。              ———— 王道       

    2024年02月09日
    浏览(39)
  • 《操作系统》——计算机系统概述

    前言: 在之前的【Linux】学习中,我们已经对常见指令已经开发工具等进行了详细的了解。紧接着,我们将要学习的便是关于【Linux进程】的基本知识。但是为了帮助大家更好的理解相关的知识概念,我先带领大家来学习关于《操作系统》这门课的基本知识!!! 目录 (一)

    2024年02月03日
    浏览(77)
  • 【操作系统】 1、计算机系统概述

    从操作系统的角度上来划分计算机体系结构: 这里注意一点: 编译器属于应用程序。 操作系统 :是指 控制 和 管理 计算机系统的 硬件 和 软件 资源 ,合理的组织、调度计算机的工作与资源分配,进而为用户和其他软件提供 方便接口与环境的程序集合。 操作系统是计算机

    2024年02月08日
    浏览(48)
  • 计算机操作系统-笔记

    第一章 引论 1. 操作系统定义 操作系统是运行在内核态的软件,它执行两个基本上独立的任务。 隐藏计算机底层硬件的实现,为用户及应用程序提供一个资源集的清晰抽象。 管理计算机硬件资源。 任何操作系统的核心是它可处理的系统调用集。这些系统调用集真实地说明了

    2024年02月20日
    浏览(38)
  • 计算机基础——操作系统

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录  前言 一.操作系统 1.操作系统简介  2.操作系统的主要功能 (1)资源管理 (2)人机交互  (3)程序控制 (4)进程管理

    2024年01月23日
    浏览(42)
  • 计算机操作系统安全

    操作系统安全是计算机系统安全的重要组成部分,目的是保护操作系统的机密性、完整性和可用性。在当前的网络环境下,操作系统面临着许多威胁,如病毒、木马、蠕虫、黑客攻击等等。为了保护操作系统的安全,需要采取各种措施来防范这些威胁。本文将介绍一些常见的

    2024年02月02日
    浏览(39)
  • 计算机基础--->操作系统(4)【文件系统】

    文件系统主要负责管理和组织计算机存储设备上的文件和目录,其功能包括以下几个方面: 存储管理 :将文件数据存储到物理存储介质中,并且管理空间分配,以确保每个文件都有足够的空间存储,并避免文件之间发生冲突。 文件管理 :文件的创建、删除、移动、重命名、

    2024年02月08日
    浏览(46)
  • 计算机操作系统——页面置换算法

    声明 :本篇博客参考书籍《计算机操作系统》(西安电子科技大学出版社) 首先说说影响页面换进换出的效率的几个因素: (1)页面置换算法。该因素是影响页面换进换出效率的重要因素。一个好的页面置换算法可以使进程在运行过程中具有较低的缺页率,从而减少页面换

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包