首页 > 编程语言 >并发编程背景知识

并发编程背景知识

时间:2023-04-01 14:00:10浏览次数:38  
标签:知识 操作系统 程序员 批处理 主机 编程 并发 CPU 输入

目录

一、开篇介绍

顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。

进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。

所以想要真正了解进程,必须事先了解操作系统

二、为什么要有操作系统

现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。一般而言,现代计算机系统是一个复杂的系统。

其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:全部掌握这些细节可能需要一万年….)

其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。

总结:

程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。

三、什么是操作系统

精简的说,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图

操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。

细说的话,操作系统应该分成两部分功能:

1.隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。

例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节)

2.将应用程序对硬件资源的竞态请求变得有序化,操作系统的一个功能就是将这种无序变得有序。

例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,打印机可能打印一段a的内容然后又去打印c...,

四、操作系统发展史

手工操作 —— 穿孔卡片

1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。

程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
手工操作方式两个特点:
(1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。
(2)CPU 等待手工操作。CPU的利用不充分。

联机批处理系统

首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理。提前使用磁带一次性录入多个程序员编写的程序,然后交给计算机执行。

主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。

脱机批处理系统

为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。

其功能是:
(1)从输入机上读取用户作业并放到输入磁带上。
(2)从输出磁带上读取执行结果并传给输出机。
这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。
脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。
不足:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。
为改善CPU的利用率,又引入了多道程序系统。

五、多道程序系统

在学习并发编程的过程中,不做刻意提醒的情况下,默认一台计算机就一个CPU(只有一个干活的人)。

单道技术

所有的程序排队执行,过程中不能重合。

多道技术

利用空闲时间提前准备其他数据,最大化提升CPU利用率。

多道技术详细
1.切换
计算机的CPU在两种情况下会切换:

  1. 程序有IO操作,输入\输出操作,eg:input、time.sleep、read、write文件的读写
  2. 程序长时间占用CPU,我们得平均分配,让多个程序都能被CPU运行一下

2.保存状态
CPU每次切换走之前都需要保存当前操作的状态 下次切换回来基于上次的进度继续执行

标签:知识,操作系统,程序员,批处理,主机,编程,并发,CPU,输入
From: https://www.cnblogs.com/zjyao/p/17278530.html

相关文章

  • 《Mysql基础》【Mysql表查询、去重、表连接、左连接 右连接、子表查询、排序、分组等
     --mysql数据库程序设计笔记:第三章:查询1、单表查询:1)、简单查询查所有列:格式:select*from表名;举例:mysql>select*fromtb_student;+----+-----------+-------------+------+------------+----------+--------+---------+-------------------+|id|studentNo|s......
  • 实验3 函数应用编程
    1.实验任务1task1.c1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint_bla......
  • 对电子逻辑知识的认识
      计算机的电子逻辑组成是和人体类似,具有一点的逻辑性。就像人体的组成分:细胞,组织,器官,人体系统,人体;电子逻辑的构成具有有序的结构;cpu也是有晶体管工程的游戏结构。 电子逻辑存在电子元件基础:1半导体晶体管:模拟实现布尔逻辑:正逻辑:高压电表示1、低压电表示0;     ......
  • c++socket编程之客户端编写
    开头用WINAPI完成了socket客户端的编写cursor很适合用于写这种单文件的WINAPI代码编写,写的很规范,它帮助我完成了API的调用,参数的选择和异常值处理,自己去写还挺费时间但不得不吐槽下,我提的几个处理中文和处理多任务的需求,无论我换何种说法,它实现的都不太好,甚至还有错误功......
  • 健康知识收集
    高反药物阿咖酚散、加合百服宁、芬必得或散利痛,能够有效缓解因高原反应引起的头痛症状;肌苷口服液是缓解高原反应比较有效的药物;服用西洋参含片和葡萄糖口服液对缓解在高原引起的疲劳有一定帮助。在拉萨还可以买到一种叫做高原康的药物,比较好的抗急性高原反应药物,但此药品有一......
  • c++ socket编程之成品展示
    开头前面两篇介绍了服务端和客户端的编写,本篇展示运行效果多次测试,修复了bug,目前运行稳定,能够用于生产环境支持多个连接,能够同时处理多个数据传输任务效果展示服务端初始界面......
  • 对电子逻辑知识的认知
    1.系统的等级层次性2.三极管的放大、开关作用3.小规模集成电路逻辑门电路4.中规模集成电路组合、时序电路5.中规模集成电路CPU逻辑器件逻辑门包括:与,或,非,与非,或非,同或,异或。与门:当且仅当所有输入为1时,产生输出1。或门:当有一个或多个输入为1时,产生输出1。非门:通常称为反相器,它能产......
  • django:数据库的一些进阶知识点与应用
    一,连接池使用第三方程序向数据库发出数据操作请求前,都需要先创建到数据库的连接,这个操作会占用大量资源。所谓的资源消耗,一是对数据库连接数量的消耗;二是对系统内存资源的消耗;三是连接建立过程对时间的消耗,时间消耗角度可以参考这篇博客。django默认会在请求进来的时候创建......
  • DDR知识记录
      DDR的读写都是64字节为单位的:开ECC的时候,小于64BYTE写的话,就需要读出来补齐到64BYTE,然后计算ECC校验值,再写入ECC校验区的8BYTE,再写入数据区的64BYTE;不开ECCDDR可以maskwrite,开ECC只能发RMW 【Read-Modify-Write】  https://zhuanlan.zhihu.com/p/586977359Mask......
  • 《Mysql基础》【Mysql表的基本操作 新建表、修改表、删除表、外键约束、主键约束、完
     --mysql数据库程序设计笔记:表基本操作:1、新建表:格式如:1)、建表加主键:createtable表名(idintNOTNULLauto_incrementcomment'自增主键id',列名类型(范围)comment'列备注',...primarykey(id))engine=InnoDB;2)、建表加候选键副键约束createtable表名......