Linux 进程概念

avatar
作者
筋斗云
阅读量:0

冯诺依曼体系结构


我们常见的计算机,大部分都遵守冯诺依曼体系结构

关于冯诺依曼的注意点

1.这里的存储器指的是内存

2.不考虑缓冲情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

3.外设(输入或输出设备)要输入或者输出的数据,也只能写入内存或者从内存中读取。

4.综上所述,所有设备都只能直接和内存互动。

硬件部分:

a. 存储器

指的是内存,硬件级别的缓冲空间,在体系中为核心地位。

为什么要加一个存储器?

因为外设和中央处理器的速度代差太大了,如果去掉存储器,输入设备慢悠悠的输入,但是运算器却能非常快的完成计算,运算器运算完后直接交给输出设备,而输出设备却慢悠悠的输出,则CPU就只能等,则势必会拖慢计算机的速度。所以加入了存储器(内存)。

b.输入设备

鼠标,键盘,摄像头,麦克风,磁盘(文件的写入),网卡(信息的接收)等

c.输出设备

显示器,扬声器,磁盘 (文件的保存),网卡(信息的发送)等

d.运算器

对输入的数据进行计算任务(算术运算和逻辑运算);

e.控制器

对我们的计算硬件流程进行一定的控制

运算器+控制器=中央处理器(CPU)

上面这些都是一个个独立的个体,设备和设备之间必须用"线"连接起来,这些"线"分为 1. 系统总线 2. IO总线

存储金字塔

1.距离CPU越远的设备,他所对应的容量会越来越大,效率会越来越低

2.存储是分级的,

软件部分:

一个程序要运行,必须得先加载到内存中运行。为什么?

程序的代码和数据必须由中央处理器运算,而想要中央处理器处理数据,程序必须在内存中运行,因为中央处理器只从运存中读取数据。所以必须把程序从外设记载到内存中。冯诺依曼体系结构规定!

操作系统

操作系统是一款进行管理的软件。

管理的中的为什么,是什么,怎么办。 


 

概念

任何操作系统都包含一个基本的程序集合,称为操作系统(OS),笼统的理解,操作系统还包括:

1.内核(进程管理,内存管理,文件管理,驱动管理)

2.其他程序(函数库,shell程序等)

设计OS的目的 (为什么)

1.与硬件交互,管理所有的软硬件资源,操作系统帮助用户管理好下面的软硬件资源。

2.为用户程序(应用程序)提供一个良好的执行环境。

操作系统通过管理好下面的软硬件资源,为用户提供一个良好的操作环境。

所有访问操作系统的行为,都只能通过系统调用完成。

如何管理好底层的软件资源?(怎么做)

1.管理者和被管理者是不需要见面的

2.管理者在不见被管理者的情况下,如何做好的管理呢?只要能够得到管理信息,就可以在未来进行管理决策。——管理的本质:是通过对数据的管理,达到对人的管理。

3.管理者和被管理者都不见面,如何拿到对应的数据呢?

在操作系统中是先描述再组织的,管理任何对象,最终都可以转化成对某种数据结构的增删查改

定位

1.在整个计算机硬件架构中,操作系统的定位是:一款纯正的"搞管理"的软件。

系统调用和库函数概念

1.在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分有操作系统提供接口,叫做系统调用。

2.系统调用在使用上,功能比较基础,对用户的要求相对比较高,所以,有些开发者可以对部分系统调用进行适当封装,从而形成了库,有了库就很有利于上层用户或者开发者进行二次开发。

进程


基本概念

一个已经加载到内存中的程序,就叫进程。

正在运行的程序叫做进程。

描述进程-PCB

任何一个进程,在加载到内存的时候,形成真正的进程时,操作系统要先创建描述进程的结构体对象 ——PCB(进程控制块)描述进程的PCB结构体和该进程对应的代码和数据合起来叫进程PCB是由操作系统自己维护,代码和数据由程序员维护。

进程=内核PCB数据结构对象(描述你这个进程的所有的属性值)+你自己的代码和数据

task_struct

概念

在linux中描述进程的结构体叫做task_struct。

task_struct是linux内核的一种数据结构,他会被装载到RAM里并且包含着进程信息。

内容分类

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

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

组织进程

可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。


    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!