目录

1.冯诺依曼体系

2.操作系统OS

3.进程/任务

3.1进程控制块抽象(PCB Process Control Block) ——操作系统的管理

3.2进程调度

3.3内存分配

3.4进程间的通信

3.4并发与并行


1.冯诺依曼体系

  • CPU 中央处理器:  进行算术运算和逻辑判断.(CPU本质是基础的门电路组合)
  • 存储器:  分为外存和内存(此处指的是内存), 用于存储数据(使用二进制方式存储)
  • 输入设备:  用户给计算机发号施令的设备  .(键盘\鼠标\写板)
  • 输出设备:  计算机个用户汇报结果的设备.(打印机\显示器)

针对存储空间  :    硬盘 > 内存 >> CPU
针对数据访问速度 :  CPU >> 内存 > 硬盘   (CPU集成度非常高,包含了很多门电路,因此跑得快(执行效率高))

CPU 中的 PC 寄存器,是决定 CPU 要执行哪条指令的关键;
2. 指令:  由动作 + 操作对象组成
3. CPU 眼中只有指令,没有其他概念


2.操作系统OS

操作系统:一组做计算机资源管理的  软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙系列. 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),包括 :

  • 内核 (进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

操作系统的定位是:可理解为 负责"管理"所有软件的一款软件(系统)

设计操作系统的目的 :

  • 与硬件交互,管理所有的软硬件资源(对内且对下)
  • 为用户程序(应用程序)提供一个良好的执行环境(对外且对上)

可参考下图进行理解 , 需要实现软硬件之间的管理

1. 管理者的任务按照种类分两种:硬型基础设备管理软性业务管理
2. 按照目标对象分两种:一种对内的管理,一种对外业务进行

操作系统由两个基本功能:

  • 防止硬件被时空的应用程序滥用;
  • 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

程序 : 一组指令以及这组指令要处理的数据。狭义上来说 通常表现为一组文件

程序 = 指令 + 指令要处理的数据。

汇编语言和机器语言(即指令)是一一对应的,程序员完成编码之后,编译器把高级编程语言(如Java、C#)编写的程序转换为可执行的机器语言。其具体过程 : 先把高级语言编写的程序转换为汇编指令(assembly instruction),然后再转换为可执行的机器语言。

 高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成。


3.进程/任务

对操作系统来说,任务(即进程:正在运行的一个“程序”)。

可执行文件(.exe)都是静态处于硬盘里,而执行之后就变为动态的进程(运行一个exe文件,OS会把其加载到内存中,变为进程),进程执行的二进制指令(由编译器生成)

进程是担当分配系统资源(CPU时间,内存)的实体,具有动态特性(如:打开一个应用程序,再关闭之前,该状态(进程)一直是保持开启的,未被关闭)。

线程:是进程里的一部分,进程包含线程(可理解进程是工厂,线程是内部的生产线)

进程工作,需要OS分配硬件资源:CPU、内存、磁盘、网络带宽等

  1. 进程:系统分配资源的基本单位
  2. 进程最核心的问题:进程在系统中是如何被管理的??----->并发式执行
  3. 操作系统对内存资源的分配:采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干扰。

3.1进程控制块抽象(PCB Process Control Block) ——操作系统的管理

Linux OS如何管理进程:

  • 描述一个进程,明确进程中的相关属性(使用PCB),OS中是通过C/C++实现的
  • 再组织若干个进程(使用数据结构(双向链表把每个进程串起来),把描述进程的信息放在一起,进行增删改查)

(用C语言的结构体来实现进程有哪些属性):描述进程的这个结构体,称为“PCB”

每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程(进程的唯一标识 —— pid)。

  • 创建进程:先创建PCB,再将PCB加到双向链表
  • 销毁进程:先找到链表上的PCB,并且从链表中删除
  • 查看任务管理器:遍历链表,查找信息

进程(PCB)的基本属性:

  • 1.pid:进程的唯一身份标识
  • 2.内存指针(该进程使用的内存空间范围,代码和其依赖的数据在内存的位置)
  • 3.文件描述符表(该进程打开了那些文件(存放在硬盘))---->文件操作:打开/读写/关闭文件。每打开一次文件,文件描述符表(可理解为一个数组)就增加一项内容(一个内容对应一个结构体,记录着当前文件的相关信息)。进程只要启动,就会默认打开三个文件:标准输入(System.in)​​​​​​​、标准输出(System.out)​​​​​​​、标准错误(System.err) 

3.2进程调度

进程调度,也即是OS考虑如何为各个进行分配资源

  • ............下面的比较重要....------>用于进程调度
  • 进程状态:  R,S,X   描述当前进程该如何被调度
  • 进程优先级: 哪个先执行
  • 进程上下文:须记住上次运行到那个指令,以便于下次继续运行(存档和读档),存储调度出CPU之前,寄存器中信息(寄存器里的内容保存到内存)进程被调度出CPU之前,先把CPU中所有寄存器数据保存到内存,进行数据存档,以便于下次调度直接从内存中恢复数据
  • 进程记账信息:记录进程在CPU运行了多久(决定是在CPU执行,还是调度出去)

​​​​​​​ 就绪(excute):进程处于可运行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
运行(running):进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
阻塞/睡眠(sleep):进程不具备运行条件,正在等待某个事件的完成


3.3内存分配(虚拟地址)

进程的虚拟地址空间:一定程度的减少内存访问越界带来的后果;

  • 优点:使得进程之间的隔离性更强,稳定性更好(独立性更好)
  • 缺点:当两个进程需要配合时,信息交流比较麻烦,但可使用(进程通信)

虚拟地址越界:会使得当前进程崩溃,而不影响其他地址;

使用真实地址越界:会使其他进程受到影响而崩溃


3.4进程间的通信

由于进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存
在的(进程之间相互独立)
即进程之间互相具备”隔离性(Isolation)“。

而对于一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要多进程进行配合,因此,进程之间就需要有进行“信息交换“的需求。(设置一个公共空间,将数据存放于此,在此实现信息交互)

目前,主流操作系统提供的进程通信机制有如下:

  • 1. 管道 :内核中提供队列
  • 2. 共享内存
  • 3. 文件:
  • 4. 网络:一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信
  • 5. 信号量
  • 6. 信号

最常用的两种通信方式:文件操作、网络操作(socket)

网络支持通信:
1.同主机的两个进程
2.同一网络下内部不同主机上的进程通信

3.5并发与并行

目前,多核CPU已经非常普及了,但由于任务数量远远多于CPU的核 数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行

并行式执行:同一时刻,多条指令在多个处理器上同时执行;
并发式执行:同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,(宏观)多个进程同时执行的效果。

操作系统对执行权限进行分级:用户态和内核态。

操作系统内核(内核态)作为直接控制硬件设备的底层软件,权限最高;用户程序的权限最低,称为用户态。

【javaEE】——计算机基础知识(进程的理解和通信)01相关推荐

  1. 计算机基础知识对编程的重要性

    码农和架构师的差别在哪里 从题目看文章,大家的第一想法是本篇文章是一篇讲述计算机基础知识和编程之间的关系,但是为什么开篇是这样的呢?当然这样的开篇并没有多大的意义,唯一的目的就是吸引读者而已. 纵观计 ...

  2. 郑州师范计算机基础知识,郑州师范学院2015年聋人本科单招考试计算机基础考试说明...

    易贤网网校上线了! 网校开发及拥有的课件范围涉及公务员.财会类.外语类.外贸类.学历类. 职业资格类.计算机类.建筑工程类.等9大类考试的在线网络培训辅导. 郑州师范学院2015年聋人本科单招考试计算 ...

  3. 关于计算机基础知识的答疑讨论,“大学计算机应用基础”三维立体课程的研究与实践...

    摘 要 本文在国内首次提出了"大学计算机应用基础"立体课程三维模型的概念.该模型包含教学内容.教学资源和教学模式三个维度,各个维度均分为若干层次.文中给出了立体课程三维模型图及有关 ...

  4. Python基础笔记_Day01_计算机基础知识和Python开发环境搭建

    Day01_计算机基础知识和Python开发环境搭建 目录 01.01_计算机基础知识(计算机概述)(了解) 01.02_计算机基础知识(软件开发和计算机语言概述)(了解) 01.03_计算机基础知识 ...

  5. 深入了解计算机的知识,电脑入门基础知识之深入理解计算机系统

    电脑入门基础知识之深入理解计算机系统 导语:计算机系统由计算机硬件和软件两部分组成.硬件包括中央处理机.存储器和外部设备等.下面就来看看小编为大家整理的资料,希望对您有所帮助! 简介 按人的要求接收和 ...

  6. 计算机基础知识的最小集合

    码农翻身的老读者们估计要烦了: 老刘真是老了,怎么老是在这里啰嗦计算机基础? 没办法,问的人特别多, 我还是要再啰嗦一次,希望这是最后一次. 很多人工作后痛感计算机基础知识的缺乏, 那计算机基础知识都 ...

  7. 计算机基础知识总结论文,大学计算机基础总结论文

    计算机基础实训课是针对非计算机专业的大一新生开设的计算机入门课程,是应用性和操作性都非常强的课程,力求培养学生对计算机的新知识.新技术的理解和应用,使学生能够有效的利用计算机来提高学习和工作效率.下面 ...

  8. 别再学习框架了,看看这些让你起飞的计算机基础知识

    这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的.框架千变万化,而这些通用的底层知识,却是几乎不变的,了解了这些知识,可以帮助我们更快着学习一门知识,更加懂得计算机的运行机 ...

  9. Java_计算机基础知识

    Java_计算机基础知识汇总 01计算机基础知识 计算机 计算机硬件 计算机软件 软件开发 计算机语言 人机交互方式 键盘功能键及快捷键介绍 常用的DOS命令 02 Java语言概述 03 JDK的下 ...

  10. 码农之路从入门到放弃之:计算机基础知识

    从入门到放弃 计算机基础知识 计算机概述 计算机组成部分 1.硬件部分: 2.软件部分 操作系统(OperatingSystem) 1.windows 简介 1.1.windows--优点 1.2.w ...

最新文章

  1. Python字符串编码坑彻底详细解决 何梁
  2. Python 基础语法(二)
  3. 【LeetCode】【数组归并】Merge k Sorted Lists
  4. 两台虚拟服务器如何级联,[教程] 利用open vswitch建立vxlan隧道实现不同主机上的虚拟交换机级联...
  5. Linux declare命令、Linux tail 命令
  6. 使用 JavaScript 实现简单候选项推荐功能(模糊搜索)【收藏】【转】
  7. “光纤之父”高锟辞世!但他的诺奖演讲辞, 青年不可不读!
  8. delphi制作上下开幕效果_2019中超联赛揭幕战在深圳举行 现场开幕式亮点多多
  9. 晋职称不考外语 计算机,评职称不考外语计算机的价值导向
  10. RS信道编码(matlab)
  11. 生信自学笔记(三)分子数据库
  12. 安装vim及vim插件使用
  13. 程序员方式原生表白网页
  14. python新手入门程序——实验5
  15. 如何快速画出霍夫曼树
  16. 基于融合的低照度图像增强
  17. 场曲 zemax示例(概念、校正)
  18. 如何利用微信登陆自己的网站
  19. 内存空间管理---连续
  20. 三个线程轮流执行顺序打印ABC

热门文章

  1. 谷歌chrome xp_什么是Google Chrome?
  2. Android异步通信:深入剖析Handler机制源码
  3. 【2021/7/19 更新】【梳理】简明操作系统原理 附录一 虚拟内存子系统案例选讲(VAX/VMS + Linux)(docx)
  4. 如何修改计算机mac地址吗,如何修改电脑的Mac地址
  5. 什么是NP完全问题?
  6. 简述P问题,NP问题,NP完全问题以及NP Hard问题
  7. php日期时间戳转换
  8. 定时器加状态转移图方式实现DS18B20
  9. Mac安装Python并使用GUI界面设计
  10. WPS或Excel将姓名变为拼音