🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍
文章目录
1.0 关于计算机是如何进行工作的 “常识”
1.1 关于寄存器、缓存与内存是如何配合 CPU “工作”
2.0 操作系统概述
2.1 操作系统内核
2.2 进程
2.3 PCB
2.3.1 PCB 属性 - PID
2.3.2 PCB 属性 - 内存指针
2.3.3 PCB 属性 - 文件描述符表
2.4 进程调度
2.4.1 PCB 属性 - 进程状态
2.4.2 PCB 属性 - 进程优先级
2.4.3 PCB 属性 - 上下文(存档信息)
2.4.4 PCB 属性 - 记账信息
1.0 关于计算机是如何进行工作的 “常识”
一个程序的指令在 CPU 上是如何执行的:指令是存储在内存中的,运行程序的时候,操作系统会先把程序的指令从硬盘(可执行文件),读取到内存中,每执行一个指令,都要经历三个环节:
1)取指令:把内存中保存的指令,读到 CPU 里。
2)解析指令:每个 CPU 设计的时候,都约定了指令表,内嵌到 CPU 中。为了搞清楚每一个指令要干啥,后续的参数都是啥意思。
3)执行指令
1.1 关于寄存器、缓存与内存是如何配合 CPU “工作”
1)寄存器:
位于 CPU 内部的一组高速存储器,用于暂存指令、数据和中间结果。寄存器是 CPU 最快速的存储设备,用于临时存储 CPU 执行的指令时需要的数据和地址。
指令最终会在寄存器(Instruction Register 简称 IR)中进行。需要注意的是,寄存器的类型不止一种,功能也是不一样的,比如,通用寄存器、专用寄存器。
当 CPU 需要执行指令时,会根据程序计数器( 简称,PC)中的地址从内存中读取指令, CPU 会将读取到的指令存储在寄存器中进行执行,而不是存储在缓存中。
2)缓存:
位于 CPU 内部或与 CPU 相关联的存储器,用于存储 CPU 访问频繁的数据和指令。缓存是为了解决 CPU 访问内存(主存)速度慢的问题而设计的,通过缓存可以减少 CPU 访问主存的延迟。缓存的访问速度介于寄存器于内存之间。
3)寄存器与缓存之间的区别:
作用上的区别:
寄存器,用于临时存储 CPU 执行指令时需要的数据和地址。是最终执行指令的位置。
缓存,要用于存储 CPU 频繁访问的数据和指令,以加快 CPU 对这些数据和指令的访问速度。
速度上的区别:
寄存器存取的速度比缓存快,且缓存的存取速度比内存快。
2.0 操作系统概述
操作系统(Operating System)是一种系统软件,操作系统既可以管理计算机硬件资源,也可以管理软件资源。操作系统在计算机系统中扮演着重要的角色,它负责管理和协调计算机系统中的各种资源,包括硬件资源和软件资源。
1)管理硬件资源:操作系统管理计算机的硬件资源,包括中央处理器(CPU)、内存、硬盘、输入输出设备等。它通过调度算法来分配 CPU 时间片,管理内存的分配和回收,控制硬盘存储和文件系统等,以确保硬件资源能够被有效利用。
2)管理软件资源:操作系统管理计算机系统中的软件资源,包括进程、文件和用户界面等。它负责创建、调度、暂停、恢复和终止进程,管理文件系统中的文件和目录,提供用户与计算机系统之间的接口,以便用户和应用程序能够方便地利用软件资源。
目前市场上常见的操作系统主要包括以下几类:Windows 操作系统、macOS、Linux 操作系统和 iOS 等等。
2.1 操作系统内核
操作系统内核是操作系统的核心组件,负责管理系统资源、提供系统调度、实现进程管理、文件系统管理等核心功能。内核通常被设计为一个独立的运行在特权模式下的软件,控制着系统的底层硬件和资源。
1)从软件角度讲解操作系统内核:
举个例子:
现在在敲出一串代码:
System.out.println("hello world");
写出来的代码就是一个应用程序,这里需要操作显示器,显示器是一个硬件,不是由程序直接操作的,而是通过以上的代码程序“告诉”操作系统,“我要操作显示器”,这样操作系统给你完成这个功能。而操作系统来控制底层硬件主要是由内核完成的。
操作系统内核 ,就会给应用程序提供一系列的 API 。比如,其中有的 API 是操作显示器,有的 API 是用来响应鼠标的,有的用来操作网卡等等。
那么以上的代码,这是调用 Java 中内置的标准库函数,这个函数的内部本质上,就需要调用操作系统内核提供的 API ,告知系统,需要控制显示器。进入到操作系统内核中了,内核在通过显示器的驱动程序(显卡驱动),在显示器上绘制对应的内容(字符串)。
2)从硬件角度讲解操作系统内核:
操作系统内核通过硬件驱动程序,从而来操作硬件。比如,同一种硬件,不同的厂商,产出来的具体细节都会有区别,硬件生产厂商就需要通过驱动程序,告知硬件具体的特点和使用详情。
2.2 进程
进程是操作系统进行资源分配和调度的基本单位,操作系统通过管理和调度进程来实现对计算机系统的控制。
在操作系统中,一个进程通常对应着一个正在运行的程序实例。当用户启动一个应用程序时,操作系统会为该应用程序创建一个新的进程,该进程包含了应用程序的代码、数据和执行状态。这个进程会被操作系统分配资源(如内存、处理器时间等),并在系统中运行。
内核控制着系统中所有的进程,并负责对进程进行调度、管理和控制。
2.3 PCB
在操作系统中,每个进程都有一个对应的 PCB(Process Control Block),PCB 用于记录和管理进程的各种信息。PCB 是操作系统内核中的数据结构,用来维护进程的状态、程序计数器、寄存器状态、进程标识符、优先级、内存分配情况、打开文件列表等关键信息。
PCB 通常存储在操作系统内核的内存空间中。当一个进程被创建时,操作系统会为该进程分配一块内存空间来存储其对应的 PCB。这块内存空间通常位于内核空间,因为只有内核才能直接访问和修改进程的 PCB。
进程本身并不在内核中,而是在用户空间中运行。进程是程序的执行实例,包含了代码、数据和执行状态。当一个程序被加载到内存中并开始执行时,就会创建一个对应的进程。
简单来说,PCB 是进程的结构体,PCB 中包含了进程的各种属性和状态信息。
操作系统中通常会类似使用链表这样的结构,来把多个 PCB 串起来。
2.3.1 PCB 属性 - PID
唯一标识每个进程的标识符。同一个时刻,进程 id 一定是不同的。
2.3.2 PCB 属性 - 内存指针
进程运行时,需要消耗一定的硬件资源。内存就是一个关键的资源。比如,一个程序在运行的时候,就会从硬盘加载到内存中,这时候,就会根据内存指针加载这个程序的指令和依赖的数据。
这指的是一组指针,不光是一个,一组指针就告诉操作系统,该进程,要运行的指令都在内存的那些位置。
2.3.3 PCB 属性 - 文件描述符表
记录进程打开的文件和文件描述符等信息。一个进程运行的时候,会操作一些文件,就通过一个 “顺序表” 这样的数据结构,记录下当前这个进程,都打开了哪些文件。
2.4 进程调度
进程调度是操作系统中的一个重要功能,用于决定哪个进程可以在 CPU 上执行。进程调度的主要目标是提高系统的性能、资源利用率和响应时间。
1)并行执行:一个核心,同一时刻,只能运行一个进程,完全同时执行。
2)并发执行:CUP 把总的执行时间,切换成若干个小的片段,每个片段执行一个进程,每个片段称为“时间片”,由于时间片比较短,CUP 切换进程的速度很快,人感知不到。站在人的角度来看,就是这若干个进程在“同时执行”,但是本质上不是同时。
因此,操作系统会按照并发与并行相互搭配,运行所有的进程。PCB 提供常见以下四种属性来支持进程调度:
2.4.1 PCB 属性 - 进程状态
记录了进程当前的状态,如运行、就绪、阻塞等。进程调度时需要根据进程的状态来确定哪些进程可以被调度执行。
2.4.2 PCB 属性 - 进程优先级
记录了进程的优先级,用于确定进程在就绪队列中的执行顺序。优先级高的进程通常会被优先调度执行。
2.4.3 PCB 属性 - 上下文(存档信息)
当前进程调度结束后,需要将未完成,等待下次完成的信息或者数据进行存档,以便下次该进程调度的时候,可以找回上一次调度的信息或者数据。
2.4.4 PCB 属性 - 记账信息
包括进程的调度策略、调度算法以及进程的调度参数等等。