计算机是如何工作的

冯诺依曼体系结构

现代的计算机, 大多遵守冯诺依曼体系结构,所以在了解计算机是如何工作的之前,必须知道冯诺依曼体系结构,也就是输入,输出,CPU,存储器所构成的关系,他们的关系可以用图表示为:

  1. 输出设备: 计算机个用户汇报结果的设备. 例如:键盘、鼠标.
  2. 输入设备: 用户给计算机发号施令的设备. 例如:显示器,打印机.
  3. 存储器 : 分为外存和内存 , 用于存储数据 ( 使用二进制方式存储)
  4. CPU 中央处理器: 运算器:进行算术运算(+-*/)和逻辑判断.                                                                                   控制器:if,while控制语句的执行方向                                                                                     寄存器:CPU执行进程时,保存进程需要的数据
存储空间:   硬盘>内存>>寄存器(CPU)

执行速度:寄存器(CPU)>>内存>硬盘

编译型语言解释型语言
需要编译的编程语言运行时,将代码翻译为cpu能执行的机器码
java静态编译java文件为class文件翻译class字节码为机器码(java进程启动后,就会创建一个java虚
拟机,边运行边難译字节码为机器码)
C++编译为具体某个系统的机器码

什么是进程

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

进程调度

系统管理进程,会先创建一个进程的pcb结构体(用于描述进程信息) ,包括:

(1) pid:标识进程的身份(类似数据库主键)
(2)状态:包括运行,阻塞等等状态
(3)内存指针:进程内存地址
(4)资源清单:io设备,硬盘文件
(5) 调度信息:进程执行了多少代码,等待了多久
(6)上下文

操作系统管理进程

(1)描述:通过pcb结构体
(2)组织:把多个进程pcb组织起来(通过一定的数据结构(链表),组织相关的信息)
               任务管理器:遍历
               创建进程:创建一个pcb,添加到这个链表
               关闭进程:从链表中删除

系统对进程的调度

时间片轮转调度算法: 一个cpu以时间片轮转调度(一个进程一个时间片,执行一段时间,就切换到下一个进程执行)的方式,依次执行多个进程,给人感觉还是同时执行。

并发:一个cpu以时间片轮转调度的方式,执行多个进程,给我们感觉像是是同时执行(实际是一个肉眼无法感知的小范围时间)

并行:多个cpu在一个时间点,同时执行多个进程 

真实的计算机中,即存在并发,也存在并行

一个进程,到底是就绪态,还是运行态,是由系统调度决定,进程是无法感知的

抢占式的调度:有优先级比较高的任务,就需要以抢占式的方式,优先执行

进程:虚拟地址空间:使用分页式存储管理

虚拟内存:现代操作系统,都会使用一种虚拟内存的技术,用于在某些进程进入阻塞等不活跃的状态,把进程需要的数据,放在硬盘中

系统中所有进程使用的内存,就可以超过物理内存的限制(扩展真实使用的内存)

虚拟地址空间+(物理内容+硬盘)

进程要加载某些数据:
(1)通过虚拟地址空间,查找对应的物理内容中的数据找到,就直接用
(2)如果找不到,就会产生一个缺页式中断,就会再次从虚拟内存保存在硬盘的部分去查找

进程控制块抽象(PCB Process Control Block)

CPU 分配 —— 进程调度(Process Scheduling

为了便于讨论和理解,我们大部分的场景下假设是单CPU单核的计算机。
操作系统对 CPU 资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。

内存分配 —— 内存管理(Memory Manage

操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干扰。

进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备" 隔离性
Isolation )"
但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行 信息交换 的需求。进程间通信的需求就应运而生。
目前,主流操作系统提供的进程通信机制有如下:
1. 管道
2. 共享内存
3. 文件
4. 网络
5. 信号量
6. 信号
其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值