Linux进程概念

目录

冯诺依曼体系结构

操作系统

进程基本概念

系统调用概念

部分系统调用接口


冯诺依曼体系结构

 我们现在使用的大部分笔记本、台式电脑、公司服务器都遵循冯诺依曼体系,它能以较低的成本,获得较高的性能。

输入设备:如键盘、话筒、摄像头、硬盘、网卡……
输出设备:如显示器、音响、磁盘、网卡、显卡……
CPU:由运算器和控制器组成,进行算术运算和逻辑运算
存储器:内存

为什么要有内存呢?
1.技术角度
cpu的运算速度>寄存器的速度>L1~L3Cache>内存>外设(磁盘)>光盘磁带
2.数据角度
外设不和CPU直接交互,而是和内存交互,cpu也是如此,内存在我们看来就是体系结构一个大的缓存,适配外设和cpu速度不均的问题
3.成本角度
寄存器>内存>磁盘(外设)

PS:所有的硬件都只能直接和内存相互访问!!!

因此我们自己写的软件编译好之后想运行必须先加载到内存上


操作系统

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
1.内核(进程管理,内存管理,文件管理,驱动管理)
2.其他程序(例如函数库, shell程序等等)

那我们为什么要设计OS呢?
1.与硬件交互,管理所有的软硬件资源
2.为用户程序(应用程序)提供一个良好的执行环境

其中,我们要怎么理解管理?,先来用现实来举个例子

 校长在管理学生的时候,他并不需要见到我们本人,而是直接统一对辅导员下达要求,然后辅导员再来对我们进行管理,操作系统也是这样,它管理硬件时不需要直接与硬件交互,而是通过驱动来管理。
管理的本质:不是对被管理对象进行直接管理,而是只要拿到被管理对象的所有的相关数据。

那么现在我们要怎么拿到数据呢?
校长要管理成千上万的学生,肯定不能把每个学生的信息全记在脑子里,于是就产生学生管理系统,每个学生的信息都用一个结构体来表示,结构体里有学生的姓名、学号、宿舍楼、年龄等等这些成员,再用我们学过的链表连接起来,那么全校的信息就都组织在了一起。
这个步骤我叫先描述,再组织,先对管理对象(学生、硬件)进行描述,再进行组织(形成数据结构)。
那么管理的本质:对数据的管理就变成了对数据结构的管理,如链表的增删查改。


进程基本概念

 什么是进程?进程就是一个运行起来的程序。进程=可执行程序+该进程对应的内核数据结构。
我们用PCB(进程控制块 task_struct)来管理进程的数据,其实本质也就是一个结构体。

 那么操作系统中会不会同时存在大量的进程?答案是肯定的!因此操作系统就需要将所有的进程管理起来。而有了PCB,那OS对进程的管理是不是就转化成了对进程数据结构的管理。又变成了对链表的增删查改。


系统调用概念

首先来思考一个问题,我们自己写的程序有资格向硬件写入吗?,我们平常说的打印,其实就是将数据写到硬件上(显示器),我们肯定是没有的。不然硬件很容易就损坏了。那么操作系统是怎么给我们提供服务的呢?操作系统不会直接暴露自己的任何数据结构、代码逻辑和其他数据的相关细节,而是通过系统调用的方式,对外提供借口来服务。而Linux是用C语言写的,所以这里所谓的接口本质就是C函数!我们学习系统编程,本质上也是学习这里的系统接口。


部分系统调用接口

一、查看进程

1.ps axj
这是最常用的查看进程的方式
2.通过proc(内存文件系统)
proc存储当前系统实时的进程信息

二、获取进程pid

每一个进程在系统中都会有一个唯一的标识符,就像我们在学校的学号。它存储在我们上面提到的PCB中,那么我们要怎么获取它呢?

我们可以通过上面提过的ps ajx命令,也可以利用getpid()函数来查看我们自己写的进程的pid。

除了pid,每个进程还有ppid,也就是父进程的标识符,而几乎在命令行上所执行的所有指令,如cmd,都是bash进程的子进程。

三、fork创建子进程

fork函数是用来创建子进程的,它有两个返回值(why?这里我们后面解释)
父进程创建子进程后,返回子进程的pid,子进程返回0表示创建成功

fork后父子进程共享代码,一起执行后续的代码,而且父子进程返回值不同,可以通过判断不同的返回值来让父子进程执行不同代码块。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

printf("雷猴");

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值