• 进程理论 阻塞非阻塞 同步异步 I/O操作


    1.什么是进程

    进程指的是一个正在运行的程序,进程是用来描述程序执行过程的虚拟概念

    进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统其它所有的概念都是围绕进程来的

    2.操作系统

    操作系统是一个协调/管理/控制计算机硬件资源与应用软件资源的一段控制程序

    有两大功能:

    1.将复杂的硬件操作封装成简单的接口给应用程序或用户去使用

    2.将多个进程对硬件的竞争变得有序

    并发:多个任务看起来是同时运行的

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

    多道技术:多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题。解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

    1.空间上的复用:多个任务复用内存空间

    2.时间上的复用:多个任务复用cpu时间

    一个任务占用cpu时间过长会被操作系统强行夺走cpu执行权限:比起串行执行反而降低效率

    一个任务遇到io操作也会被操作系统强行剥夺走cpu的执行权限:比起串行执行可以提升效率

    3.同步/异步和阻塞/非阻塞

    同步:执行一个操作后,要等待结果,然后才能继续执行后续的操作

    异步:执行一个操作后,可以取执行其他的操作,然后等待通知再回来执行刚才没执行完的操作

    阻塞:线程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。

    非阻塞:线程给CPU传达任务后,继续处理后续的操作,隔段时间再来询问之前的操作是否完成。其实这样的过程也要轮询。

     4.I/O操作

    I/O:input和output即输入和输出

    由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。

    比如打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫input。所以,通常,程序完成IO操作会有input和output两个数据流。当然也有只用一个的情况,比如,从磁盘读取文件到内存,就只有input操作,反过来,把数据写到磁盘文件里,就只是一个output操作。

    CPU遇到IO操作时是会切走的。

    世界最优美的情书
  • 相关阅读:
    Java并发基础10:原子性操作类的使用
    Java并发基础09. 多个线程间共享数据问题
    Java并发基础08. 造成HashMap非线程安全的原因
    Java并发基础07. ThreadLocal类以及应用技巧
    Java并发基础06. 线程范围内共享数据
    Java并发基础05. 传统线程同步通信技术
    Java并发基础04. 线程技术之死锁问题
    我是如何从通信转到Java软件开发工程师的?
    IOS 判断耳机插入/拔出
    海量数据处理
  • 原文地址:https://www.cnblogs.com/xufengnian/p/10567942.html
Copyright © 2020-2023  润新知