【Linux】linux进程--进程概念第一部分

1、冯诺依曼体系结构

中央处理器:cpu

       功能:算术/逻辑运算(与、或、非门之类的东西,电子信息的噩梦)

存储器:内存

       不能将数据进行持久化的保存(相当于手机的运存,在计算机方面也分ram、rom等区别,相当于手机的运存和存储,有兴趣可以去了解一下)

结论:

       1、所有的数据都是采用2进制进行存储(通过电源高低电平模拟0和1)

       2、运算产生的数据都存储在内存当中

       3、拓展:计算机可以由多个cou同时处理数据,叫做多核,和linux中多线程有着差不多的概念

2、操作系统的概念与定位

1)操作系统的概念

     操作系统=操作系统内核+应用

     任何计算机系统都会包含一个基本的程序集合,称之为操作系统(OS)

     操作系统内核:也是代码程序,代码的作用就是(进程管理、内存管理、文件管理、驱动管理等等)

     应用:依附在操作系统内核上完成的某些功能。

2)操作系统的工作

      操作系统在管理计算机的软硬件资源

      硬件资源:CPU、内存、硬盘、网卡、显示器等等;

      软件资源:进程资源、驱动程序等。

3)操作系统如何完成工作

      通过管理。管理=描述(结构体)+组织(串联结构体)

4)操作系统组织结构图

5)系统调用 & 库函数

      系统调用:操作系统提供的函数,被称之为系统调用函数

      库函数:C标准库提供的函数,被称之为库函数。库函数的代码实现当中调用了系统调用函数(系统调用函数可以管理计算机的软硬件资源,较为复杂,不适合新手使用)。

3、进程的概念(PCB)

1)什么是程序?什么是进程?

      程序:源代码经过编译产生的可执行文件,这个文件时静态的。

      进程:程序运行起来的实例,是动态在运行的。

2)操作系统如何管理进程

      进程的管理=描述(PCB)+组织的方式(链表)

3)描述:PCB

      进程标识符:在当前机器能够唯一表示一个进程

              进程号(PID):

                     ps  aux/ps  -ef       加上管道符号和过滤,拿到自己想要的信息

                     getpid();         函数

4、进程状态

1)从CPU角度来理解,进程的状态分为:就绪/运行/阻塞

进程想要向后执行自己的代码就必须要占用CPU资源进行计算(执行代码)

但是进程会有很多,CPU始终都是有限个的,操作系统是如何分配获取CPU资源的:

       调度的策略:先来先服务、短作业优先、长作业优先、优先级优先、时间片轮转。

运行:进程占用CPU,在CPU上运行;理解为进程正在使用CPU来执行自己的代码;

就绪:进程已经具备了运行条件,但是CPU还没有分配过来;理解为进程已经将运行前的准             备工作已经全部做好,就等着操作系统调用去占用CPU了。

阻塞:进程因为等待某一件事情发生而暂时不能运行,例如等待IO输入、调用某些阻塞接                 口。

暂停(插入内容):暂停插入的前提是进程是抢占式执行

           在机器CPU数量少,进程多的情况下(常态),操作系统在调度的时候要做到雨露均沾,让每一个进程都可以运行上,但是在操作系统调度的时候,是从就绪的队列当中获取进程来运行。换句话说,进程准备好了,谁就绪了,原则上就可以调度了。所以进程为了能够执行自己的代码,都是抢占式执行,不会相互谦让。

不同进程在运行时有两种形态:

并发:多个进程在一个CPU下,采用进程切换的方式,各自独占CPU运行各自的代码,交替             运行,让多个进程都得以推进,称之为并发。(可以想象为两个车道并为一个,车流             汇入的过程)

并行:多个进程在多个CPU下,同时运行各自代码,称之为并行。(可以现象为多车道并排             前进的车流)

而在一个多核CPU的机器当中,并发和并行是混合存在的。

2)细分的进程状态:

   

R:运行状态 处于R状态的进程有可能在执行代码,有可能在就绪队列。
S:可中断睡眠状态 进程正在睡眠(被阻塞),等待资源到来时唤醒你也可以通过其他进程信号或时钟中断来唤醒,进入运行队列
D:不可中断睡眠状态 通常等待一个IO结束(输入输出结果)
T:暂停状态(ctrl+z) 在Linux系统下不要使用ctrl+z结束进程,不是结束而是暂停;ctrl+c可以终止进程。
t:跟踪状态 调试程序的时候可以看到
X:死亡状态 这个状态用户不可见
Z:僵尸状态 僵尸进程的知识(会在后续博客中写出)

3)程序计数器 & 上下文信息 & 内存指针 & 记账信息 & IO信息

       程序计数器:保留程序下一条执行的指令;

       上下文信息:保存寄存器当中的内容;

       内存指针:指向“程序地址空间”

       记账信息:使用CPU时长,占用内存大小;

       IO信息:保存进程打开的文件信息。

你可能感兴趣的:(Linux,linux,服务器,c++)