建设网站过程,有货源怎么做电商,wordpress悬浮小人,网站开发需要了解的知识Linux——操作系统与进程基本概念 文章目录 Linux——操作系统与进程基本概念一、冯诺依曼体系结构二、操作系统2.1 OS层次图2.2 操作系统的作用2.3 管理的理解 三、进程3.1 进程的概念3.2 描述进程—PCB3.3 PCB的内容3.3.1 查看进程3.3.2 标识符3.3.3 状态3.3.4 程序计数器3.3…Linux——操作系统与进程基本概念 文章目录 Linux——操作系统与进程基本概念一、冯诺依曼体系结构二、操作系统2.1 OS层次图2.2 操作系统的作用2.3 管理的理解 三、进程3.1 进程的概念3.2 描述进程—PCB3.3 PCB的内容3.3.1 查看进程3.3.2 标识符3.3.3 状态3.3.4 程序计数器3.3.5 记账信息3.3.6 上下文信息 一、冯诺依曼体系结构 输入设备 键盘、磁盘、网卡、显卡、写字板、摄像头等 输出设备 显示器、磁盘、网卡、显卡等 存储器 内存 运算器和控制器 CPU 上图中的存储器指的是内存 在不考虑缓存情况下这里的CPU能且只能对内存进行读写不能访问外设(输入或输出设备) 外设(输入或输出设备)要输入或者输出数据也只能写入内存或者从内存中读取 一句话所有设备都只能直接和内存打交道
冯诺依曼体系结构是现代计算机主要使用的体系结构 在计算机的发展历史上对于计算机的构造其实出现过很多不同的构造例如哈佛结构图灵结构但计算机发展至今冯诺依曼体系结构却是现代计算机主要使用的结构
理由首先我们需要知道现代计算机cpu的算力速度是非常恐怖的而对于硬件来讲 cpu的读写速度大于内存而内存大于磁盘但在计算机发展的初期由于科学技术受限cpu 内存 磁盘 三者之间的速度差别可能不大 所以存在cpu与磁盘等外设相连cpu直接读写到磁盘中的情况但随着科学技术的发展cpu的读写速度呈指数级上升cpu的读写速度远大于磁盘的读写速度根据木桶原理我们可以知道如果cpu直接与磁盘进行数据交换的话属于是暴殄天物了磁盘会限制计算机的算力所以大部分的计算机体系结构都被淘汰了而正是因为冯诺依曼体系结构的合理性使其没被淘汰 现代计算机以CPU为中心距离cpu越近存储效率越高造价越贵 如果全部用高价格一定带来的就是计算机太贵了 如果我们全部用便宜的存储介质计算机价格便宜但是基本用不了 二、操作系统
首先需要知道的常识是操作系统其实也是软件而且是第一个运行起来的软件也是需要被加载到内存运行的只有变成一个进程也就是被执行了运行起来了操作系统才真正起作用了 这里提到了进程的概念本文中会提到此处只需要知道操作系统也是软件也需要被执行起来才有作用
2.1 OS层次图 2.2 操作系统的作用
早期的计算机由于技术不够成熟使用的人大部分都是科研人员是妥妥的程序员但设计计算机的初衷本质是为了让人们在各行各业都能使用获得便利所以对于一个小白来讲也要能使用上计算机也就是上图中的用户 如果没有操作系统我们就要和一堆的硬件直接接触需要了解各种硬件的特性使用成本太高 由此就有了操作系统 像这种任何计算机包含的一种最基本的能够进行软硬交互的一款软件我们把它叫做操作系统英文缩写OS OS包括 内核进程管理内存管理文件管理驱动管理这是OS用于管理硬件的 其它程序函数库shell程序等这些程序能帮助用户更方便的使用OS 操作系统是什么 是一款专门针对软硬件资源管理工作的软件
操作系统的功能 对下管理好软硬件资源 对上为用户提供稳定、高效、安全的运行环境
那OS怎么对用户提供各种功能 首先要知道OS不信任任何用户所以我们也只能通过接口来与OS打交道也就是OS层次图中的系统调用接口 系统调用与库函数的区别 系统调用在使用上功能比较基础对用户的要求相对也比较高所以一些大佬对部分系统调用进行适度封装从而形成库有了库就很有利于更上层用户或者开发者进行二次开发 2.3 管理的理解
既然是管理那么就有管理者和被管理者 我们可以想象在学校中校长就是管理者但是我们从来没见过校长 管理者和被管理者不直接接触管理者的决策交给执行者老师、辅导员通过他们管理被管理者学生 按照上面OS的层次图OS就是校长驱动程序就是辅导员底层硬件就是我们学生 通过例子我们可以得出以下的结论 ① 管理者和被管理者并不直接打交道 ② 如何对被管理者进行管理 先进行一些决策再把这些决策施行 而管理者的决策需要有依据依据就是数据
而我们的数据怎么被管理者知道呢 如果一个学校人很少校长有可能能知道每个人的数据但是如果人很多呢该如何聚合这些数据呢 这就用到了C语言中的结构体C中的类 我们将学生具有的属性定义成结构体或类的过程通常叫做数据的描述 有了结构体或类那么就可以将数据存放在容器中数组也好链表也好可以进行增删查改也就是管理数据把这个过程叫做数据的组织
由此我们得出重要结论 管理的本质不是管理人而是管理数据 计算机执行管理时先把管理对象描述起来再把管理对象组织起来 先描述 再组织 以上讲的都是对硬件的管理那么对软件呢对于软件的管理也是一样先描述 再组织 三、进程
3.1 进程的概念
进程 可执行程序 内核数据结构(PCB)
Windows中任务管理器下的程序就叫进程 Windows中当我们想运行一个软件的时候会双击一个.exe后缀的文件这个文件就是可执行程序 上面我们说过操作系统的本质是管理而管理是先描述 再组织
当想要创建一个进程的时候要先将可执行程序加载到内存随后操作系统对其建立对应的PCB进程控制块 3.2 描述进程—PCB
进程信息被放在一个叫做进程控制块的数据结构中可以理解为进程属性的集合 课本上称之为PCBprocess control blockLinux操作系统下的PCB是: task_struct
task_ struct内容分类 标示符: 描述本进程的唯一标示符用来区别其他进程 状态: 任务状态退出代码退出信号等 优先级: 相对于其他进程的优先级 程序计数器: 程序中即将被执行的下一条指令的地址 内存指针: 包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子要加图CPU寄存器] IO状态信息: 包括显示的I/O请求,分配给进程的IO设备和被进程使用的文件列表 记账信息: 可能包括处理器时间总和使用的时钟数总和时间限制记账号等 其他信息 3.3 PCB的内容
3.3.1 查看进程
由于要查看一个进程要保证进程一直在运行这里写一个死循环 查看进程指令 ps axj | grep “mytest” ps -l 查看运行中进程的详细信息 另一种查看进程的方法 ls /proc proc是linux默认查看进程的目录而我们创建的的进程的信息也会在proc中创建一个目录 修改程序获得程序的pid 找到对应的目录pid下文中会提到 查看该目录下内容
3.3.2 标识符
查看进程的标识符 getpid() 身份证可以说是人的标识符而进程也有一个属于自己标识符pid
3.3.3 状态
退出信号我们写的程序末尾会有个return 00就是退出码 退出码用于检测程序是正常结束还是异常结束
查看最近一次的退出码 echo $? 3.3.4 程序计数器
也就是pc指针永远指向下一条指令的地址
3.3.5 记账信息
OS有一个调度模块可以较为均匀的调度每个进程因为进程要获得CPU的资源才能进行而进程又有很多他会记录每个进程所使用的时间总和以确保“公平”
3.3.6 上下文信息 假设上述四个进程正在运行 为了保证公平操作系统规定了进程单次运行的时间片单次运行的最长时间我们以为的CPU在同时运行多个进程其实是CPU的快速切换完成的在一个时间片运行一个进程到了时间就切换下一个
假设我现在执行PCB1一个时间片到了之后需要转换成PCB2但PCB1进程很可能没执行完而进程运行会产生大量的临时数据
这样就会引出一个问题 当1运行完一次时间片后这些临时数据下次还要用如果不管2就会覆盖掉1的临时数据 所以我们需要保护上下文信息和恢复上下文信息当PCB1运行完一个时间片时PCB1带走自己的临时数据PCB回来的时候再把临时数据给寄存器接着上次运行