zoukankan      html  css  js  c++  java
  • 实现并发编程的基础理论

    一、操作系统

    1.操作系统的两大功能

    (1)隐藏了丑陋的调用接口,为外部提供调用资源更好、更简单、更清晰的模型(系统调用接口)。

      例如:操作系统提供了抽象的文件这个概念,日常对文件的操作就是对磁盘的操作。

    (2)将应用程序对硬件资源的竞争请求由无序化变得有序

    2.什么是操作系统

    (1)定义:操作系统就是一个管理、协调和控制计算机硬件资源和软件资源的控制程序。

        操作系统是位于计算机硬件与软件之间,使之上也是一种软件

    3.操作系统的发展史

    (1)第一代计算机(1940~1955):真空管和穿孔卡片

    第一代之前人类是想用机械取代人力,第一代计算机的产生是计算机由机械时代进入电子时代的标志,从Babbage失败之后一直到第二次世界大战,数字计算机的建造几乎没有什么进展,第二次世界大战刺激了有关计算机研究的爆炸性进展。

    lowa州立大学的john Atanasoff教授和他的学生Clifford Berry建造了据认为是第一台可工作的数字计算机。该机器使用300个真空管。大约在同时,Konrad Zuse在柏林用继电器构建了Z3计算机,英格兰布莱切利园的一个小组在1944年构建了Colossus,Howard Aiken在哈佛大学建造了Mark 1,宾夕法尼亚大学的William Mauchley和他的学生J.Presper Eckert建造了ENIAC。这些机器有的是二进制的,有的使用真空管,有的是可编程的,但都非常原始,设置需要花费数秒钟时间才能完成最简单的运算。

    在这个时期,同一个小组里的工程师们,设计、建造、编程、操作及维护同一台机器,所有的程序设计是用纯粹的机器语言编写的,甚至更糟糕,需要通过成千上万根电缆接到插件板上连成电路来控制机器的基本功能。

    特点:没有操作系统的概念,所有的程序都可以直接控制硬件

    优点:在程序员申请的时间内,该程序员可以独自享有该台计算机的资源,有了BUG可以立即调试

    缺点:同一个时间段内只有一个程序员可以使用,浪费了计算的的资源

    (2)第二代计算机(1955~1965):批处理系统和晶体管

    ‘大型机’:设计人员、生产人员、程序人员、维护人员和操作人员直接有了明确的分工,计算机被所在特定温度的机房当中,由专业的操作人员运行。

    优点:采用批处理系统,节省了机时

    缺点:1.在整个过程中都需要人员来参与进行,负责运送磁带

         2.计算的过程仍然是采用串行的方法

         3.程序员原本可以独自享有计算机资源,现在取得结果都必须等到同批次的程序运行完毕才可以(极大的影响了开发效率)

    (3)第三代计算机(1965~1980):集成电路芯片和多道程序设计

    多道设计:

      概念解释:

        串行:一个任务完完整整的运行完毕后,才能运行下一个任务

        并发:肉眼看上去时多个任务同时运行即可,单核也是可以事项并发

        并行:真正意义上的多任务同时运行,只有多核才能实现并行

      产生背景:cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,硬盘上的机械手臂滑动读取数据到内存中,这一段时间,cpu需要等待,时间可能很短,但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务,如果我们让cpu在这段时间内切换到去做其他的任务,就可以充分的利用cpu。

      定义:多道技术中的多道指的是多个应用程序,多道技术的实现是为了解决多个应用程序之间的竞争或者说共享一个资源的有序调用问题。

      解决方式:多路复用,即空间上的复用和时间上的复用

      空间上的复用:同一时间在内存中开辟了多个空间(或者说将内存分成多个部分),每一个空间内都可以放入一个程序,这样同一时间内内存中就有了多道程序。

      时间上的复用:当一个程序在进行IO切换操作时,另外一个程序就可以使用cpu了;或者一个程序占用的时间过长,也会被系统强制切换。

        进行IO切换可以提升效率,一个程序占用cpu时间过长而不切换,就会影响到效率。

      第三代计算机采用的仍然是批处理系统,为了解决这个问题,开发了分时操作系统:多个联机终端+多道技术

    20个客户端同时加载到内存,有17在思考,3个在运行,cpu就采用多道的方式处理内存中的这3个程序,由于客户提交的一般都是简短的指令而且很少有耗时长的,索引计算机能够为许多用户提供快速的交互式服务,所有的用户都以为自己独享了计算机资源

    CTTS:麻省理工(MIT)在一台改装过的7094机上开发成功的,CTSS兼容分时系统,第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,分时系统才开始流行

    MIT,贝尔实验室和通用电气在CTTS成功研制后决定开发能够同时支持上百终端的MULTICS(其设计者着眼于建造满足波士顿地区所有用户计算需求的一台机器),很明显这个是基本上不可能实现的。

    后来一位参加过MULTICS研制的贝尔实验室计算机科学家Ken Thompson开发了一个简易的,单用户版本的MULTICS,这就是后来的UNIX系统。基于它衍生了很多其他的Unix版本,为了使程序能在任何版本的unix上运行,IEEE提出了一个unix标准,即posix(可移植的操作系统接口Portable Operating System Interface)

    后来,在1987年,出现了一个UNIX的小型克隆,即minix,用于教学使用。芬兰学生Linus Torvalds基于它编写了Linux

     

  • 相关阅读:
    函数节流
    ios12兼容性问题,调用原生接口,判断系统为ios12
    谷歌浏览器跨域
    超过两行...,只有两行或少于两行无...且没有查看更多文字 关键思路:超过两行...用ellipsis,但是为了判断文字是否多余两行,所以要获取节点的高度,如果大于两行则文字出现,否则没有更多文字
    Object.assign 浅拷贝还是深拷贝
    用instanceof判断数组类型
    322.零钱兑换(动态规划和贪心)
    面试题59
    tcp四次挥手
    tcp连接的三次握手
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9296277.html
Copyright © 2011-2022 走看看