0


【Linux】进程序言


这里是阿川的博客,祝您变得更强

✨ 个人主页:在线OJ的阿川
💖文章专栏:Linux入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


在这里插入图片描述

在这里插入图片描述

目录


1. 冯.诺伊曼体系结构

计算机硬件中,大部分都遵守冯诺依曼体系结构,具体如图1所示:
在这里插入图片描述

图1 冯诺依曼体系结构

存储器:内存

外设:

  • 输入设备: 鼠标、键盘、摄像头、话筒、磁盘、网卡…
  • 输出设备: 显示器、播放器、硬件、磁盘、网卡… 有的设备既是输出又是输入设备

中央处理器(即CPU)

  • 运算器: 对我们的数据进行计算任务(算术运算,逻辑运算)
  • 控制器: 对我们的计算硬件流程进行一定的控制

运算器: 处理数据
控制器: 处理代码
各个硬件单元必须用"总线"(主要为系统总线、IO总线)连接起来

通过冯诺伊曼体系结构可知道一个程序要运行,必须先加载到内存中运行才可以,这是因为输入设备和输出设备处理时间为秒,而中央处理器处理时间为微秒,差距过于明显。****如果没有存储器作为中介则计算机整体运行效率低下。而有了存储器之后,输入设备的数据会先缓存到存储器中,积累一定的量之后中央处理器开始处理,而在缓存的过程中,中央处理器可以处理其他的任务(例如检查计算机状态,释放各种各样的资源,定期刷新数据等等),恰好存储器的运行效率处于输入输出设备与中央处理器之间,相较于没有存储器而言,提高了整体计算机运行效率。


2. 操作系统

为了更好地控制硬件,而创建了操作系统

操作系统(即OS): 是一款为了给用户提供一个良好(稳定、高效、安全)的运行环境,而对硬件和软件管理的软件
操作系统包括:

  • 内核: 进程管理,内存管理,文件管理,驱动管理
  • 其他程序: 例如函数库,shell程序等等

在开发角度,操作系统对外会表现为一个整体但是会暴露自己的部分接口供上层开发使用,这部分用操作系统提供的接口叫做系统调用
但系统调用在使用上,功能比较基础,对用户的要求也比较高,所以部分有能力的开发者对部分系统调用进行适度封装,从而形成了库,有了库,就有利于更上层用户或者开发者进行二次开发,甚至一些人在操作系统之上弄出来了开发语言,供开发人员编写程序

3. 计算机层状结构

计算机层状结构,具体如图2所示:
在这里插入图片描述

图2 计算机层状结构


4. 进程概念

操作系统的管理,实际上是通过对数据的管理,从而达到对软硬件资源的管理。而对数据进行管理则都是先描述,再组织,最终可以转化成对某种数据结构的增删查改,因此操作系统中一定会存在着大量的数据结构,这也是为什么要学数据结构这本书的原因所在

进程: 一个已经加载到内存的程序

操作系统可以同时运行多个进程,但形成真正进程时操作系统要先创建描述进程(即进程的属性)的结构体对象即PCB(全称process ctrl block —进程控制块

进程(也称为task)= 内存PCB数据结构对象(即这个进程的所有属性值)+ 自己代码和数据(code&date)
大致如图3所示:
在这里插入图片描述

图3 进程大致结构图

Linux当中的PCB实现
在Linux中描述进程的结构体叫做task _struct。task_struct是Linux内核的一种数据结构,它会被装载到RAM(即内存)里并且包含着进程的信息
task_struct内容包含着

  • 标志符:描述本进程的唯一标识符,用来区别其他进程。
  • 状态:任务状态,退出代码,退出信号等。
  • 优先级:相对于其他进程的优先级。
  • 程序计数器:程序中即将被执行的下一条指令的地址
  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据:进程执行时,处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]
  • I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表
  • 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等
  • 其他信息

Linux内核中组织进程,最基本的组织进程task_struct的方式,采用双向链表组织


5.展望一下

计算机中这些可以好好看下
操作系统(必学)
计算机网络(必学)
计算机组成
编译原理(本质:算法)

C/C++语言的最终表现形式:一套的编译器、头文件、库文件(辅助C/C++教材)


  1. 夹带私货

若你能看到看到这篇文章且能看到这,则说明你我有缘留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强

好的,到此为止啦,祝您变得更强
在这里插入图片描述
7.想说的话

实不相瞒,写的每篇博客都要写五六个小时(加上自己学习和纸质笔记,共八九小时吧),很累希望大佬支持

在这里插入图片描述
道阻且长 行则将至个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/2301_81874719/article/details/142302137
版权归原作者 在线OJ的阿川 所有, 如有侵权,请联系我们删除。

“【Linux】进程序言”的评论:

还没有评论