操作系统的发展与进程初识

一.操作系统

1.os组成

os组成包括硬件和软件

硬件:主机(CPU + 存储器),I/O设备

软件:系统软件,应用软件

2.os发展史

脱机批处理系统:单道批处理系统与多道批处理系统。

单道批处理系统:

优点:缩短了手工操作的时间,提高了CPU的利用率

缺点:

半自动化,不提供人机交互能力,需要人参与,给用户使用带来了不便

计算过程是串行,限制了即使系统的使用效率

必须等所有文件处理完,才返回结果,降低了程序的开发效率

多道批处理系统:运用了多道技术的批处理系统

特点:遇到IO操作就切换程序,使得cpu的利用率提高了。解决CPU的速度与I/O速度不匹配的矛盾

时空复用:

空间复用:把内存分成多个独立的小内存空间,一个空间执行一个程序

时间复用:不同的程序或用户轮流使用它

技术的实现:

中断:使正在运行的程序让出CPU

状态保存:用PSW保存系统被中断时的状态,放入PCB池中

优点:提高了CPU的运行效率

分时操作系统:使用分时技术的操作系统。

时间片:操作系统将CPU的时间划分成若干个片段

分时技术:按时间片轮流把CPU分给多个程序使用

特点:

多路性:若干个用户同时使用一台计算机。

交互性:实现人机交互

独立性:用户之间可以相互独立操作,互不干扰

及时性:能做出及时响应

优点:提高多个程序的共同效率

缺点:降低了单个程序的处理效率

实时操作系统:

定义:在确定性的时间内,执行完程序,并返回相应的结果。

一般多用在与军事相关的操作系统上

二.进程

进程:程序关于某数据集合的一次运行活动,是OS进行资源分配和调度的基本单位

进程实体结构:

数据结构P

内存代码C

内存数据D

通用寄存器R

程序状态字信息PSW

进程三态:

就绪态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

运行态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

阻塞态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态

挂起态:

使用前提:使用前提:计算机系统在运行过程中出现资源不足时候

资源不足表现为:性能低和死锁

定义:剥夺进程占有内存及其他资源,不参与进程调度,被os或程序主动结束挂起态后,再从硬盘调入内存并恢复其他资源,参与调度

挂机态与阻塞态的区别:

阻塞态:在内存中处于等待

挂起态:不占据内存,所有数据储存在硬盘中

同步与异步

同步:任务提交之后 原地等待的任务的执行并拿到返回结果才走 期间不做任何事

异步:任务提交之后 不再原地等待 而是继续执行下一行代码

阻塞与非阻塞

阻塞:阻塞态

非阻塞:就绪态 运行态

进程同步

互斥锁 :

使用前提:当多个进程操作同一份数据的时候 会造成数据的错乱

使用限制:锁必须在主进程中产生 交给子进程去使用

加锁处理把程序的并发运行变成了串行,虽然降低了效率但是提高了数据的安全

锁的使用会增加程序的复杂度,也容易造成死锁现象

from multiprocessing import Process,Lock
import time
import json

# 查票
def search(i):
    with open(‘data‘,‘r‘,encoding=‘utf-8‘) as f:
        data = f.read()
    t_d = json.loads(data)
    print(‘用户%s查询余票为:%s‘%(i,t_d.get(‘ticket‘)))

# 买票
def buy(i):
    with open(‘data‘,‘r‘,encoding=‘utf-8‘) as f:
        data = f.read()
    t_d = json.loads(data)
    time.sleep(1)
    if t_d.get(‘ticket‘) > 0:
        # 票数减一
        t_d[‘ticket‘] -= 1
        # 更新票数
        with open(‘data‘,‘w‘,encoding=‘utf-8‘) as f:
            json.dump(t_d,f)
        print(‘用户%s抢票成功‘%i)
    else:
        print(‘没票了‘)

def run(i,mutex):
    search(i)
    mutex.acquire()  # 抢锁  只要有人抢到了锁 其他人必须等待该人释放锁
    buy(i)
    mutex.release()  # 释放锁

if __name__ == ‘__main__‘:
    mutex = Lock()  # 生成了一把锁
    for i in range(10):
        p = Process(target=run,args=(i,mutex))
        p.start()

三.multiprocessing模块

Process类的介绍

方法介绍

 1 p.start():启动进程,并调用该子进程中的p.run()
 2 p.run():进程启动时运行的方法我们自定义类的类中一定要实现该方法  

 3 p.terminate():强行终止进程p,不会先解锁再清除,容易造成死锁,及子进程成为僵尸进程。

 4 p.is_alive():判断进程是否存活

 5 p.join([timeout]):主线程等待p终止

属性介绍

1 p.daemon:默认值为False。如果设为True,代表p为守护进程,父程序终止时,P程序也会被终止。守护进程不能创建自己的进程,并且必须在start方法之前设置

2 p.name:进程的名称

3 p.pid:进程的id

4 p.exitcode:进程运行时为值None、为–N时,表示被信号N结束

创建进程

 from multiprocessing import Process
 import time

 def test(name):
     print(‘%s is running‘%name)
     time.sleep(3)
     print(‘%s is over‘%name)

# windows创建进程会将代码以模块的方式 从上往下执行一遍
# linux会直接将代码完完整整的拷贝一份
#

 if __name__ == ‘__main__‘:
     p = Process(target=test,args=(‘egon‘,))  # 创建一个进程对象
    p.start()  # 告诉操作系统帮你创建一个进程
     print(‘主‘)

from multiprocessing import Process
import time

class MyProcess(Process):
    def __init__(self,name):
        super().__init__()
        self.name = name

    def run(self):
        print(‘%s is running‘ % self.name)
        time.sleep(3)
        print(‘%s is over‘ % self.name)

if __name__ == ‘__main__‘:
    p = MyProcess(‘egon‘)
    p.start()
    print(‘主‘)

原文地址:https://www.cnblogs.com/Cpsyche/p/11336917.html

时间: 2024-11-09 01:03:02

操作系统的发展与进程初识的相关文章

操作系统的发展与分类

手工操作阶段(此阶段无操作系统) 用户在计算机上算题的所有工作都要人工干预,如程序的装入.运行.结果的输出等.随着计算机硬件的发展,人机矛盾(速度和资源利用)越来越大,必须寻求新的解决办法. 手工操作阶段有两个突出的缺点: 用户独占全机.不会出现因资源已被其他用户占用而等待的现象,但资源利用率低. CPU等待手工操作,CPU的利用不充分. 唯一的解决办法就是用高速的机器代替相对较慢的手工操作来对作业进行控制. 批处理阶段(操作系统开始出现) 为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛

Android-多进程初识

Android-多进程初识 学习自 <Android开发艺术探索> https://baike.baidu.com/item/%E8%BF%9B%E7%A8%8B/382503?fr=aladdin#1 https://blog.csdn.net/cmyperson/article/details/56278433 进程与线程 IPC(Inter-Process Communication)指的是进程间通信,指的是两个进程之间交换数据的过程.在学习IPC之前我们得先了解一下什么是进程,什么是线

操作系统之进程初识

进程的定义 1.进程是具有一定独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位. 2.从操作系统看:进程分为系统进程和用户进程.系统进程执行操作系统的程序,完成操作系统的某些功能.用户进程运行用户程序,直接为用户服务.系统进程的优先级通常优于一般用户的进程. 3.进程是由程序.数据块和进程控制块(PCB)构成.进程(动态)是程序(静态)的一个执行过程,一个进程可以包括若干程序的执行,而一个程序也可以产生多个进程. 进程的状态与转换 进程从创建到终止的全过程一直

并发编程-------&gt;操作系统的发展

手工操作 -- 穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行:计算完毕,打印机输出计算结果:用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机. 手工操作方式两个特点: (1)用户独占全机.不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低. (2)CPU 等待手工操

python之路之——操作系统的发展历史

阅读目录 手工操作 —— 穿孔卡片 批处理 —— 磁带存储和批处理系统 多道程序系统 分时系统 实时系统 通用操作系统 操作系统的进一步发展 操作系统的作用 手工操作 —— 穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念.     程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行:计算完毕,打印机输出计算结果:用户取走结果并卸下纸带(

操作系统的发展过程

无操作系统的计算机系统: 1.人工操作方式. 有两方面的缺点: (1)用户独占全机.此时,计算机及全部资源只能由上机用户独占. (2)CPU等待人工操作. 2.脱机输入/输出方式. 为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾. 主要优点: (1)减少了CPU的空闲时间. (2)提高了I/O速度. 单道批处理系统: 1.单道批处理系统的处理过程. 2.单道批处理系统的特征. (1)自动性. 在顺利的情况下,在磁带上的一批作业能自动地逐个地依次运行,而无需人工干预. (2)顺序性. 磁

操作系统的几种进程调度算法

  进程状态: 1.等待态:等待某个事件的完成: 2.就绪态:等待系统分配处理器以便运行: 3.运行态:占有处理器正在运行. 运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的. 等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行. 运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态.例如时间片用完,或有更高优先级的进程来抢占处理器等. 就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成

我看操作系统的发展

截止到今天,也就是本文下笔的2017年2月12日,我接触过很多操作系统,于是就产生了一个想法,那就是把这些零碎的东西用一根线穿起来,作为我个人的知识库的一部分-- 本文主要介绍一些重量级的操作系统的前世今生. 桌面级:Windows,Linux,Unix 移动级:Android,iOS,Windows phone 嵌入式:VxWorks等一干RTOS 1. Windows Windows来源于Microsoft公司,是世界上最负盛名的桌面操作系统,它的前身是DOS(Disk Operating

革发展的进程,关t

(七)坚持德才兼备.以德为先.坚持把品德放在专业技术人才评价的首位,重点考察专业技术人才的职业道德.用人单位通过个人述职.考核测评.民意调查等方式全面考察专业技术人才的职业操守和从业行为,倡导科学精神,强化社会责任,坚守道德底线.探索建立职称申报评审诚信档案和失信黑名单制度,纳入全国信用信息共享平台.完善诚信承诺和失信惩戒机制,实行学术造假"一票否决制",对通过弄虚作假.暗箱操作等违纪违规行为取得的职称,一律予以撤销. 21世纪,中国提出了"一带一路"倡议.3年多来