【操作系统和进程那些事】

作者: 小飞学编程…_优快云博客-编程小白
专栏:JavaEE初阶
标题:操作系统和进程那些事
在这里插入图片描述

一. 引言

探讨进程相关的问题我们就离不开操作系统…

操作系统管理着进程:
可以:
①:创建、结束进程;
②:决定哪个进程在何时使用CPU(进程调度);
③:管理进程间的通信与同步。

----因此:在学习进程前我们要弄明白什么是操作系统;进而方便我们对进程更好的学习与了解;

二,什么是操作系统;

  • 操作系统是计算机系统中最重要的系软件;
  • 操作系统是硬件与应用程序交互的主要桥梁;

三,现今主流的操作系统;

Microsoft Windows;

简单介绍;

  • 由微软公司开发和发布的一系列图形用户界面的操作系统;属于:桌面操作系统;
  • 目前成为十亿个人和企业用户的首先平台。虽然面临着来自其他操作系统的挑战,但其在桌面计算领域的领导地位依然稳固,并持续通过Windows10和Windowa11进行创新和进化;

Linux

简单介绍

  • Linux是一个开源的类Unix操作系统内核;
  • 目前后端软件开发,服务器程序使用的系统一般都是Linux;

Windows 与Linux的区别

直接区别;

这两个操作系统提供得API(系统函数)截然不同;

补充:

什么是API;

 应用程序编程接口;
 即:别人写的一些类(函数)我们拿过来引用就可以直接用;
 类似于:
 C语言中的:#include<stdio.h>;
 
 Java中的:String(字符串引用);
String str=new String();

Mac OS;

简单介绍;

-Mac OS 是苹果公司为Mac电脑开发的专属操作系统;

ios;

简单介绍;

-ios 是苹果公司为IiPhone,iPad , Apple TV 等移动设备开发的专属操作系统;
基于Mac OS 的Darwin内核;

相关问题解读;

关于苹果手机永久了也不会卡,耐用问题;

不同于安卓,苹果系统对待应用程序得审核是比较严格的;可以极大的防止一些流氓软件(很多广告插件指令,占用CPU)的下载,大大减少了CPU资源消耗,相对来说使得手机永久了对性能消耗也没有安卓高;

Android ;

Android 是由Google主导开发的基于Linux内核的移动操作系统;

操作系统与Java相关的知识面;

   上述操作系统互相都是不兼容的;

记得:在刚学习java基础语法的时候,就学到过:java是支持跨平台,写一份java代码就可以在不同的系统运行,并且执行代码后的功能是一致的。。。。

呢这是为什么呢????

  原因:
  目前这些主流得操作系统都开始了对应的java虚拟机;
  Windows有WIindows的JVM;
  Linux有linux的JVM(虚拟机);
  这些虚拟机是不同的程序,但是上层支持的都是和Java一样的字节码文件;所以说java是行走的程序;
我们通过上述知识的学习;也大体上了解明白了什么是操作系统:
呢么我们就明白了电脑上我们那些自己下载的应用软件都是下载到了操作系统上, 
并且操作系统是是硬件与应用程序交互的主要桥梁;

因此:我们明白了:操作系统要管理这些硬件和应用·程序;所以操作系统也是一个管理软件;

操作系统的管理功能

管理硬件方面;

操作系统通过驱动程序来简接管理硬件;

 补充:驱动程序:开发硬件的工程师在开发出来一个硬件都会开发一个与硬件相配的软件程序(驱动程序)来完成对硬件的操作;

管理应用程序方面;

给各种应用程序提供了一个稳定的运行环境;即使某个应用程序出现问题也不会影响其他应用程序的运行;

案例:
我在电脑上和我的好朋友QQ聊天,不知道因为什么QQ就闪退了,但是这不妨碍我继续在微信上和我的好朋友聊天;

呢么:计算机是如何做到QQ软件出现bug的时候,微信还能正常运行;保证这些应用程序互不干扰稳定运行呢?????

进程

 一个运行起来的程序就叫做进程;

现在我们打开我们电脑的任务管理器就会发现:一个电脑上可以同时运行上百个进程;

电脑上运行一个进程的话,就不用进行管理;但对于上百个进程来说就需要进行管理

所以就需要操作系统进行管理

操作系统是如何进行管理这些进程的

 现在我先讲解一个生活中的例子:
在一个学校中,学校会接收上千名学生,这是需要进行管理这些学生,呢么学校是如何进行管理这些学生呢????????

1,统计每个学生的:①姓名,②学号,③成绩,④班级,⑤宿舍,⑥专业`;***
(计算机中通过定义结构体进行定义这些不同的属性
2,将这些信息通过表格进行整理起来;
(计算机中我们会使用合适的数据结构进行保存这些数据)

通过上述例子的理解;我们慢慢构建出了操作系统对进程管理的正确方法:

1.先进行描述一个进程是啥样的;
方法:使用结构体进行描述进程的核心属性
并且引入进程控制块(PCB):可以理解为:是一个超级大的结构体,可以设置很多很多的属性;
2.将多个进程进程组织起来,进而进行管理;
方法:使用数据结构中得链表或者顺序表进行组织;进而进行管理;

通过生活中例子进行类比学习计算机知识是一个很好的方法,因为计算机就是为我们人类进行服务的; 所以这样的方法会让我们对计算机知识的学习做到事半功倍的;希望我们学有所成:

 进程的铺垫知识已经学完,现在我们就聊一聊关于进程的这些事吧!!!    

进程三部曲

1,创建一个新的进程;

创建一个PCB,初始化PCB中的各个属性;并将其加载到链表上(用到的数据结构);

2.销毁一个进程;

遍历链表找到要销毁的进程;

3.查看进程列表;

遍历链表,将链表中的关键内容,添加到界面上进行展示;

进程控制块(PCB)

1.pid(进程ID);

进程的身份标识符;

2.内存指针;

为了更好的了解内存指针的作用,下面我先讲述一下一个程序的由来,以及操作系统的相关作用;

应用程序的由来(简化版)

1.通过程序员进行代码编写,编写一个应用程序相关功能的代码;

2.将上上述代码进行编译等操作,生成了机器语言(相关指令),供电脑进行识别;

3.以及确定好这些相关指令在执行过程中依赖的数据;

4.通过统一上述三步,就会生成一个对应的exe文件,可以被运行,称为可执行文件;

(关于可执行文件的数据会存储到硬盘上)

操作系统的相关作用

因为操作系统是硬盘于应用程序之间的桥梁;=》操作系统进行加载过程之后就会将硬盘上的上述可执行文件的数据和指令读取到内存中,后续进程在进行执行的过程的就会从指令相关的内存区域一条一条的进行执行相关指令;同时也说明进程在运行的过程中也会依赖到CPU进行执行相关指令

内存指针的作用

因为进程就是一个运行的程序;所以进程要想运行起来就需要知道要执行的指令在哪里,以及指令依赖的数据在哪里,进而=》明确内存指针就是用来存储这些数据的;

3.文件描述符

进程运行过程中,很多时候就需要进行和硬盘进行交互;
为了方便进行交互:硬盘就将数据以文件的格式进行打包好;所用进程运行过程中需要进行打开文件;
而文件描述表就是将每个被打开的文件进行记录,同时操作系统为了方便进行管理就将其他要和进程进行交互的东西,抽象的类比成一个文件进行交互,极大方便了操作系统,因此也说明**进程的运行会依赖到硬盘和网卡等资源设备;**

综合以上理解:进程是操作系统的分配资源的基本单位;

进程控制块(PCB)的进一步相关属性;

在这里插入图片描述

     在进行上述图片这些关于进程调度的讲解前,我们需要进行一些关于其它知识的铺垫,方便学习上图的这些相关属性:

分时复用

 我们知道一个电脑上CPU的·核心数也就呢么几个,但是进行的线程就有上百个,于是,我们怎么想都感觉奇怪:这件事不可能实现啊?怎么这么神奇呢!!!

 现在我就说说这是怎么一回事:
1.在早期,我们使用的是`“单任务操作系统”`就是只能在同一时刻运行一个进程,想要进行另一个线程就需要关闭当前这个线程才可以运行另一个;
2.随着时代发展,我们有了`多任务操作系统(一个COU只有一个核心)`:这是我们就提出了`分时复用`;

分时复用:

将一个单位时间分成好多个更小的单位时间;
在小单位时间一:CPU执行进程一的指令;
在小单位时间二:CPU执行进程二的指令;
…’
依次划分…

     在不同的单位时间来进行占用CPU;
 (由于CPU的执行速度相当快,人眼几乎感觉不到CPU在不同的时间进行切换执行这些进程,使得人眼感觉在同时运行因此我们就会困惑,这么多的进程是如何同时运行的。。。)                  

因此:把一个CPU在一个核心上,采用分时复用的方法,进行完成这些进程的运行方式成为
“并发执行”
即:人看起来是在同时执行,但在微观上:CPU是在依次执行这些进程,只不过是速度极快,我们感觉不到
随着技术的发展我们通过多核技术,超线程技术(在我的作品计算机是如何构成的中有讲解)以及大小核技术=》我们CPU有了多个核心数进行工作了,这时,我们通过:把多个CPU核心上同时执行多个进程的方法称为并行执行;即·我平时生活上所说的同时执行;

针对并发执行与并行执行的总结

1.并发执行其实是一个CPU核心通过分时复用的方法进行多个小进程(线程)的快速切换来进行执行的·
2.并行执行其实是多个CPU核心同时进行多个进程的执行;

通过上述内容的学习:因为并发执行需要进行不同的进程进行切换,所以需要我们把这个切换称为***
进程调度

在这里插入图片描述

现在进行学习进程调度的准备工作:(PCB的相关属性)

进程状态

主要状态:

1,就绪状态
进程可以随时到CPU上进行执行;(随叫随到);
2.阻塞状态
进程当前不适合到CPU上执行;(用事要完成,不方便);

进程优先级

电脑上可以同时运行好多的进程,呢么,它们到CPU上运行·的机会均等吗???
像现实生活中一样:消防车在紧急情况下可以闯红灯;
对于进程来说也是一样:有些进程可以优先上CPU进行执行指令,吃到更多的CPU资源;

进程的上下文

  由于CPU进行不停的进行进程调度所以:对于一个进程来说CPU执行一会后就去执行其他的进程去了,但是这样的话我们会怎么知道该进程执行到哪里了呢???
 这是我们就需要进行保存我们的进程进度了;

呢么:我们就可以更好的想到什么是进程的上下文呢???????????????????

CPU从一个进程切换到另一个进程的时候,CPU上的寄存器就会把前一个进程执行到哪里去了进行保 存到内存中去;这就称作进程的上文保存;
等到下次进程再一次执行到该进程的时候就将内存中的相关数据重新存到寄存器中,使得CPU根据上回得进度进行执行该进程的指令;这就称为进程的下文存储;

进程的记账信息

:统计功能:这个功能会进行记录每个进程在CPU上的运行时间,以便查看每个进程吃到CPU资源差不多,防止那个进程一直吃到好多的CPU资源,进而影响其他进程,导致程序运行不畅,发生卡顿;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值