码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux操作系统


    目录

    一、操作系统的I/O模型以及同步异步阻塞和非阻塞的区别

    1)I/O模型

    2)操作系统的IO模型

    a)阻塞IO模型

    b)非阻塞IO模型

    c)IO多路复用模型

    d)信号驱动IO模型

    e)异步IO模型

    3)IO步骤

    4)同步和异步:

    5)阻塞和非阻塞:

    6)IO多路复用模型:

    二、进程与线程的区别

    三、死锁

    1.死锁概念

    2.死锁产生必要条件

    1)互斥

    2)占有并请求

    3)不可剥夺

    4)循环等待

    3.解决办法

    1)重启

    2)终止进程

    3)剥夺资源

    4)进程回退


    一、操作系统的I/O模型以及同步异步阻塞和非阻塞的区别

    1)I/O模型

    描述的是cpu速度快,而外部IO速度慢,cpu不得不牺牲宝贵的时间等待外部IO,因此出现了很多IO模型

    2)操作系统的IO模型

    a)阻塞IO模型

    b)非阻塞IO模型

    c)IO多路复用模型

    d)信号驱动IO模型

    e)异步IO模型

    3)IO步骤

    a)内核从IO设备读写数据,放进缓冲区(耗时长)  

    b)线程从内核复制数据(耗时短)

    4)同步和异步:

    当调用方主动主动查询和复制数据时,属于同步;当操作系统在数据准备完成后告诉调用方,此时是IO异步。前者可以类比为双11枪东西,用户在一直访问东西是否还有,此时为同步。后者可以理解为公司发布招聘通知,应聘者前去应聘,此为异步。

    5)阻塞和非阻塞:

    调用IO的时候,如果缓冲区为空或者满了,调用的线程或进程一直处于等待状态,直到IO可用并完成数据拷贝,此为阻塞;非阻塞指调用IO操作时,内核立马给出结果,如果IO不可用,会返回错误。

    6)IO多路复用模型:

    一种函数同时监听多个fd操作,这个函数就是我们常说的select,poll,epoll

    二、进程与线程的区别

    1)进程是对运行时程序的封装,是系统进行资源分配和调度的基本单元,线程是进程的子任务,是cpu调度和分配的基本单元。

    2)一个进程包含多个线程

    3)进程之间不会相互影响;而一个线程的崩溃会导致进程崩溃,从而影响其他线程。

    三、死锁

    1.死锁概念

    多个进程在争夺系统资源的时候处于相互等待的状态

    2.死锁产生必要条件

    当满足以下4点即为产生死锁

    1)互斥

    当资源被一个进程使用的时候,其他进程不可使用

    2)占有并请求

    一个进程在请求数据的时候被阻塞,而自身占有的数据不释放

    3)不可剥夺

    一个进程所使用的资源在没有用完的时候不会主动释放,不能被强行剥夺

    4)循环等待

    多个线程处于首尾相接的循环等等待资源状态

    3.解决办法

    1)重启

    代价大,不仅重启产生死锁的进程,其他无关进程也被重启

    2)终止进程

    将产生死锁的进程终结,可以一次性终结,或者根据代价成本依次终结

    3)剥夺资源

    对于产生死锁的资源进行剥夺,可以一次性剥夺或者分次剥夺

    4)进程回退

    将产生死锁的进程回退到未产生死锁之前的状态

  • 相关阅读:
    【监控系统】日志可视化监控体系ELK搭建
    Linux之history命令详解
    websocket学习
    设计一个网络爬虫(Python)
    常见Java基础面试题目分享二
    关注短视频的“时间”,找准用户活跃时间,高流量也不是梦
    深入理解Java注解的实现原理以及前世今生
    数据结构:顺序表
    《HelloGitHub》第 88 期
    notepad++打开文本文件乱码的解决办法
  • 原文地址:https://blog.csdn.net/ljjjjjjjjjjj/article/details/127622830
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号