zoukankan      html  css  js  c++  java
  • 第三十四天 电脑操作系统和进程的初了解


    1.电脑及操作系统的发展史:


      1.在电脑发展初期采用的是程序和数据的以穿孔纸带,装入输入机中,然后启动输入机进行数据读取并传递给计算机进行计算。这种工作方式可以独占全机,但是在数据接受和输出时cpu

    的利用不充分。

      2.根据这个问题,后来研究出了联机批处理,即磁带处理,可以在磁带上放多个用户的数据进行输入,然后在输出,这样提高了效率,但是cpu利用率还是低。工作流程图如下:

      3.根据上述的现象我们又研制出了脱机批处理: 这个系统就是在计算机进行完计算进行数据输出的时候就可以进行下一次输入机的输入,又进一步有效进行cpu的利用

       4.是否有一种方法可以在cpu进行计算的时候把另一个数据传送进去,等这一次cpu计算完成之后,在对读取到的下一个数据直接进行计算,这样更加有效的提高了cpu的利用率

    这种方法叫做多道程序执行:

      5.分时系统,由于cpu速度不断提高和采用分时技术,一台计算机可以同时连接多个用户终端,而每个用户可以在自己的终端上连接使用计算机,好像独占机器一样

    2.现在的操作系统一般都是通用操作系统:

      通用操作系统一般是指多道批处理系统、分时系统、实时系统。

    3.多道技术:为了实现并发

    当计算机中的某个cpu遇到程序中的堵塞时,会等到程序io结束后在进行重新调度,就绪后会被调度到某一个cpu上执行,具体哪一个是由系统的调度算法进行决定

    空间上的复用:如内存中有多个程序同时进行

    时间上的复用:复用一个cpu的时间片

      注:遇到io切,占用cpu时间长的也要进行切,核心在于切之前要将进程中的状态保存下来,这样才能保证下次切换回来时,能够找到切走时的位置继续运行。

    4.进程:

    进程就是指正在运行的程序:是一个具有一定独立功能的程序关于某个数据即和的一次运行活动,他是操作系统动态执行的基本单元,它既是分配单元吗,也是基本的执行单元

    5进程和程序的区分:

    程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念

    而进程是程序在处理机上的一次执行过过程,他是一个动态的概念

    程序可以作为一种软件长期存储,而进程具有一定的生命周期

    进程运行在内存中,而程序一般保存在硬盘中


    6.进程有许多调用算法:


     1.先来先服务原则:FCFS调度算法,是一种简单的调度算法,该算法既可用于作业调度也可用于进程调度,fcfs算法比较有利于长期作业的进程,而不利于短期作业的进程。

    2短作业优先调度法:先处理工作量少的任务,这样对先来的大工作量不公平

    3.时间片轮转法:不停的进行任务的切换

    4多级反馈队列:

     

     7.并行和并发:

    并行指的是两者同时进行工作,条件是要有多个cpu

    并发:是指资源有限的情况下,两者交替轮流使用资源,在单核cpu中,a走一段后,再让b走一段时间,b走完这段时间后,再转给a继续走。交替使用提高效率

    并行,在微观上也是同一时刻有多个程序在执行

    并发,在宏观上同一时刻执行多个程序,微观上同一时刻只有一个程序在执行

    8.进程过程中的三态图:

     9.就绪状态:当程序已经分配给cpu以外所有必要的资源时,只要获得处理机就可以立即执行,这时的进程状态成为就绪状态

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

    11.堵塞:在进程执行过程中,由于某个事件发生而无法执行时,便放弃处理处于堵塞状态,引起进程堵塞的事件有很多:I/O完成、申请缓冲区不能满足、sleep、recv、accept等

      用程序进行演示如下:

    #程序在进行运行状态以后,并不是立即执行代码,而是进入
    #就绪状态,等待操作系统调度后才开始运行
    import time  #程序运行状态
    print('程序开始执行') #程序运行状态
    name=input('请输入名字;')#在这里遇到等待用户输入,程序进入堵塞状态,用户输入完
                                #之后并不是立即运行,而是进入就绪状态,等待操作系统的调度继续运行
    print(name) #程序运行状态
    time.sleep(1)  #程序进行堵塞状态
    print('程序执行结束') #运行
                            #结束
    View Code

     12.同步和异步

    所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成之后,依赖的任务才能完成,这是一种可靠的任务序列,要么都成功,要么都失败。两个任务的状态

    都要保持一致

    所谓异步就是指不需要等待依赖任务的完成,只要通知被依赖的任务完成什么样的工作,依赖的任务也立即执行,只要自己完成整个任务就算完成了。至于被依赖的任务最终是否完成依赖

    它的任务无法确定,所以他是不可靠的任务序列。

    比如我们去银行办理业务,可能会有两种方式:
    第一种:选择排队等候
    第二种:选择取一个小纸条上面有我的号码,等到排到我这一号由柜台的人通知我轮到我去办理业务了
    第一种:前者(排队等侯)就是同步等待消息通知,也就是我要一直等待银行办理业务情况;
    第二种:后者(就是等待别人通知),就是异步等待消息通知,在一步消息处理中,等带消息者,往往注册一个回调机制,在所等待的事件被触发时由触发机制通过某种机制找到等待该事件的人
    View Code
  • 相关阅读:
    Python基础课:多继承
    Python基础课:定义一个函数,输入一个序列,判断序列是顺序还是逆序,顺序输出UP,逆序输出DOWN,否则输出None
    Python基础课:测试type 和 isinstance 那个的速度更快
    Python基础课:定义一个函数,可以对序列逆序的输出(对于列表和元组可以不用考虑嵌套的情况)
    WEBAPI获取数据
    jQuery中的.height()、.innerHeight()和.outerHeight()
    Javascript基类对象原型中有数组的情况
    必须关注的25位知名JavaScript开发者
    jQuery中的事件绑定函数.bind()、.live()、on()和.delegate()
    Javascript全局变量和delete
  • 原文地址:https://www.cnblogs.com/ab461087603/p/12463615.html
Copyright © 2011-2022 走看看