首页 > 其他分享 >操作系统(Operating System)

操作系统(Operating System)

时间:2023-08-04 23:32:45浏览次数:72  
标签:文件 操作系统 System 调度 Operating 内存 进程 CPU

一.操作系统的定位

操作系统就是搞计算机资源管理的软件统称

操作系统(Operating System)_操作系统

1.对上就是要管理好各种硬件设备

2.对下就是要给应用程序提供一个稳定的运行环境

操作系统是软件,硬件和用户之间交换的媒介

操作系统(Operating System)_操作系统_02



二.什么是进程(Process/任务(Task))

下面的这些都是进程

操作系统(Operating System)_操作系统_03

程序是一个可执行文件(静态的),如果双击运行,此时操作系统就会把可执行文件的数据和指令加载到内存中,并让CPU执行这些指令运行起来----进程可以看做程序的一次执行过程(动态的)

并且进程会消耗CPU资源,内存资源,硬盘,网络带宽;

进程是操作系统进行资源分配的基本单位

针对计算机"进程"的管理

1.先描述

使用专门的结构体(PCB在Linux中源码是一个task_struct结构体)进行来记录进程里的各个属性

2.在组织

使用一系列的数据结构(线性表,搜索树),把多个进程进行有效的组织 方便管理进行增删查改操作

举例

当使用双向链表进行组织是(针对Linux来说)

a.查看进程的列表,实际上是遍历这个链表;

b.创建一个进程就是创建一个PCB结构体,并且把这个结构体插入到链表中;

c.删除一个进程就是把这个PCB结构体从链表中删除并释放;


三.进程控制块抽象(PCB Process Control Block)

1.pid进程的标识

操作系统(Operating System)_操作系统_04

同一系统,同一时刻每个进程的pid 一定是不同的;

2.内存指针

表示该进程对应的内存资源(主要存储.exe可执行文件中的数据和指令)

3.文件描述浮表

与硬盘资源有关,

一般来说硬盘是硬件,

应用程序无法直接接触的硬件这一层,

而实际上是操作系统抽象成文件这样的概念,

程序操作的是文件,

文件实际上存储在硬盘上.

操作系统打开一个文件就会产生一个"文件描述符"(类似于文件身份标识且只在进程内部生效)

与此同时使用文件描述浮表(类似于一个数组)就是给文件描述符组织起来;

4.PCB中关于进程调度相关的属性

a.状态

就绪状态:一个进程随时做好了在CPU执行的准备;

阻塞状态/睡眠状态:有时进程还没准备好就被调度到CPU上;

.......

状态可以相互转换

实际上进程在系统的状态还有很多种,就绪状态和阻塞状态是最关键的

b.优先级

系统在给进程进行调度时,会根据优先级的不同,来决定分配的权衡,将系统资源分配给更重要的进程;

举例

比如说你往大型游戏的时候,此时后台的其他应用程序的优先级肯定往后排了;

c.上下文

这些进程轮着上可能一次性运行不完,此时需要保证下次上CPU运行的时候,能从上次运行的时候,继续执行(相当于存档,读档操作)

对于操作系统来说,上下文表示该进程在执行过程中CPU寄存器中对应的数据

d.记账信息

统计每个进程CPU执行力多少次,执行了什么指令,是对于进程调度工作的一个"兜底"

四.CPU的分配 --- 进程调度(Process Scheduling)

每一个进程想要执行里面的指令,完成对应的任务都需要在CPU中进行(假如进程比作演员,CPU就是拍摄场地)

如果一台机器上,进程同一时刻有成百上千个,而CPU只有一个,那怎么办呢?

进程调度

1.并行:同一时刻,两个进程,同时运行运行在两个CPU逻辑核心上;

2.并发:两个进程,在同一个CPU轮着使用(由于CPU切换进程速度非常快,微观上是存续执行的,宏观上来看进程就是同时进行)

操作系统在调度这些进程时可能是并行调度,也可能是并发调度在应用程序层面感知不到(在系统内核中)

由于感知不带是哪一个调度方式,并且在宏观来看,并行与并发是一样的,所以一般用并发代指并行和并发.

五.内存分配 --- 内存管理(Memory Manage)

每一个进程都需要一定的内存资源

在早期的操作系统直接把物理内存分配给了进程,这就带来了一个严重的问题;

操作系统(Operating System)_操作系统_05

一旦某个进程(进程A)内部代码出现问题,内存越界访问了,自己可能没事,却影响到了其它进程(进程B)(死道友不死贫道),这样的设计极大影响了系统的稳定性;

后来为了解决这一问题,操作系统引入了"虚拟地址空间"这样的概念

操作系统(Operating System)_操作系统_06

这样设定之后,每个进程的有效的虚拟地址都是固定的范围

进程使用这样的虚拟地址都需要操作系统转换成物理地址,在这个转换的过程中就可以对虚拟地址是否有效进行效验

当系统检查出非法的地址使用就可以及时的通知这个进程,甚至是挂掉这个进程以免影响其他的进程

由原来的"人工保证" 变为 "系统的自动检测" ,每个进程就影响不到其它进程,大大提高了系统的稳定性;

六.进程间的通信(Inter Process Communication)

通过虚拟地址空间,将进程隔离开了,但有些时候需要进程直接产生点联系

进程间通信方法:

  1. 管道
  2. 共享内存
  3. 文件
  4. 网络
  5. 信号量
  6. 信号

本质上都是找到一个共同的区域(多个进程都能访问到),借助公共区域完成数据的交换;




标签:文件,操作系统,System,调度,Operating,内存,进程,CPU
From: https://blog.51cto.com/u_16166203/6970135

相关文章

  • 操作系统需要重点关注指标
    机器层面的监控分为两部分,带内监控和带外监控。带内监控就是通过带内网络来监控,主要是以在OS里部署Agent的方式,来获取OS的CPU、内存、磁盘、IO、网络、进程等相关监控指标。外监控走的是带外网络,通常和业务网络不互通,通过IPMI、SNMP等协议获取硬件健康状况。IPMI可用于监......
  • 漏洞发现-操作系统之漏洞探针利用修复
    一.探针1.goby忍者系统测试2.nmap扫描---如果加上参数,就会调用script目录下的nse插件进行扫描Nmap--script=vuln默认nse插件Nmapvulscanvulners调用第三方库探针加入拓展扫描模块https://cnblogs.com/shwang/p/12623669.html#输入指令nmap--script=vulnip地址,想......
  • 操作系统概述
    分散概念组成操作系统的主要部分通常是进程线程管理、内存管理、设备管理和文件管理从软件设计和开发角度来看,操作系统的主要作用提供软件开发基础平台从计算机系统发展角度来看,操作系统主要作用是提供虚拟机和扩展机操作系统为用户提供了高效使用计算机的接口,操作系统提供人机交互......
  • 解读 --- System.Windows.Forms.Timer是前台线程吗?
    引言今天同事问了我一个问题,System.Windows.Forms.Timer是前台线程还是后台线程,我当时想的是它是跟着UI线程一起结束的,应该是前台线程吧?我确实没有仔细研究过他们的异同,所以带着这个疑问探究一下System.Windows.Forms.Timer。System.Windows.Forms.Timer机制System.Windows.F......
  • MySQL配置通过systemctl管理
     MySQL配置通过systemctl管理 参考官方文档资料,步骤不多。创建mysqld.service文件。touch/usr/lib/systemd/system/mysqld.servicechmod644/usr/lib/systemd/system/mysqld.service  官方对MySQL5和MySQL8提供的mysqld.service内容并不同。/etc/sysconfig/mysq......
  • 学习记录 麒麟操作系统桌面工程师
    麒麟的证书 工信部的专项技术证书 学习感想我比较关注国产化软件基础设施,当知道麒麟操作系统有相应的认证之后,就开始咨询培训事宜、攒学费,自费报名了培训课程。认证考试的内容是系统的、基础的,适合作为新人上手学习的第一站。培训备考阶段有视频课程和模拟考试,对新人较......
  • 学习记录 麒麟操作系统运维工程师
    麒麟的证书 工信部的专项技术证书 学习感想自从考过麒麟操作系统桌面工程师的认证后,我就开始计划再上一个台阶,想着把麒麟操作系统运维工程师认证给考过了。于是乎,又开始新的一轮,咨询培训事宜,攒学费,自费报名培训。运维工程师的培训内容就有一些难度了,要懂一些操作系统、网......
  • 显示锁,隐式锁 (管程、monitor 、操作系统)
    无锁时并发出问题importjava.util.*;/***无锁*@authorwitas**/publicclassBank{publicstaticvoidmain(String[]args){finalintNACCOUNTS=100;finaldoubleINITIAL_BALANCE=1000;finaldouble......
  • kali渗透测试之三操作系统识别-nmap
    识别操作系统:    在确定目标主机在线后,应当识别他们使用的操作系统,这个阶段的工作称为识别操作系统(也称为操作系统指纹识别),识别操作系统的的方式分为两种:主动式和被动式。主动式识别工具向目标机器发送数据包,并根据目标的响应确定其使用的操作系统,这种方式的优点在于探测......
  • CentOS创建systemctl系统服务
    开机启动服务文件位置:/etc/systemd/system/创建服务文件(以tomcat为例):vim/etc/systemd/system/tomcat.service[Unit]Description=tomcatAfter=network.target[Service]Type=forkingUser=rootGroup=rootExecStart=sh/usr/local/apache-tomcat-8.5.88/bin/startup.sh......