Linux 进程概念
冯诺依曼体系结构
我们常见的计算机,大部分都遵守冯诺依曼体系结构
关于冯诺依曼的注意点
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链表的形式存在内核里。