Python学习 Day 032 - 进程

进程

  • 1.背景知识  -- 操作系统
  • 2.什么是进程
  • 3.进程调度
  • 4.并发与并行
  • 5.同步\异步\阻塞\非阻塞
  • 6.multprocess模块

1.背景知识 -- 操作系统 (ps:相关书籍,现代操作系统、操作系统原理)

(1)什么是操作系统

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

#一:隐藏了丑陋的硬件调用接口(键盘、鼠标、音箱等等怎么实现的,就不需要你管了),为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。
例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节),

#二:将应用程序对硬件资源的竞态请求变得有序化
例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,打印机可能打印一段a的内容然后又去打印c...,操作系统的一个功能就是将这种无序变得有序。
操作系统的功能
#作用一:为应用程序提供如何使用硬件资源的抽象
例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制

注意:
    操作系统提供给应用程序的该抽象是简单,清晰,优雅的。为何要提供该抽象呢?
    硬件厂商需要为操作系统提供自己硬件的驱动程序(设备驱动,这也是为何我们要使用声卡,就必须安装声卡驱动。。。),厂商为了节省成本或者兼容旧的硬件,它们的驱动程序是复杂且丑陋的
    操作系统就是为了隐藏这些丑陋的信息,从而为用户提供更好的接口
    这样用户使用的shell,Gnome,KDE看到的是不同的界面,但其实都使用了同一套由linux系统提供的抽象接口


#作用二:管理硬件资源
    现代的操作系统运行同时运行多道程序,操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配。
例如:
    同一台计算机上同时运行三个程序,它们三个想在同一时刻在同一台计算机上输出结果,那么开始的几行可能是程序1的输出,接着几行是程序2的输出,然后又是程序3的输出,最终将是一团糟(程序之间是一种互相竞争资源的过程)
    操作系统将打印机的结果送到磁盘的缓冲区,在一个程序完全结束后,才将暂存在磁盘上的文件送到打印机输出,同时其他的程序可以继续产生更多的输出结果(这些程序的输出没有真正的送到打印机),这样,操作系统就将由竞争产生的无序变得有序化。

详解
操作系统的作用

(2)操作系统的发展史简介

第一代(1940~1955手工操作---- 穿孔卡片

所有的程序设计是用纯粹的机器语言编写的,甚至更糟糕,需要通过成千上万根电缆接到插件板上连成电路来控制机器的基本功能.

特点:

手工操作特点:

  • 用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。
  • CPU 等待手工操作。CPU的利用不充分。
  • 没有操作系统的概念。
  • 所有的程序设计都是直接操控硬件。

第二代1955~1965)  磁带存储---批处理系统

摆脱人的手工操作,实现作业的自动过渡。这样就出现了成批处理

  批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令.
 
特点:
  • 有了操作系统的概念
  • 有了程序设计语言:FORTRAN语言或汇编语言

1.联机批处理系统

 首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理

主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批处理数据

 但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。(忙等状态就是说CPU等着输出完成之后再去从输入机上读指令来执行,造成了CPU的浪费)

 2.脱机批处理系统

 为克服与缓解:高速主机与慢速外设(输入输出设备)的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出(input\output,简称I\O操作)脱离主机控制。

猜你喜欢

转载自www.cnblogs.com/wcx666/p/9830475.html