zoukankan      html  css  js  c++  java
  • 操作系统二

    ps:人工智能相关参考资料/网站
    人脸识别、语音识别、语音转文字
    百度API、图灵机器人(自动回复消息)
    科大讯飞(智能医疗、智能城市)

    如果pycharm老过期,可以下载最新版本的pycharm,然后去网站获取激活码即可


    今日内容介绍:
    进程对象及方法
    僵尸进程与孤儿进程
    守护进程
    互斥锁
    队列介绍
    进程间通信PC机制
    生产者消费者模型
    线程相关

    今日内容详细
    进程对象及其他方法
    一台计算机上面运行着很多进程 ,计算机如何区分并管理这些进程服务端的呢?
    计算机会给每个运行的程序分配一个pid号
    window--》cmd-->tasklist 、tasklist|findstr PID 查看具体进程
    mac--->进入终端--》ps aux、ps aux|grep 58825 查看端口号


    僵尸进程与孤儿进程(了解)
    僵尸进程
    死了没有死透
    当开设子进程之后,该进程死后不会立刻释放进程号
    因为我要让父进程能够查看到它2开设的子进程的基本信息 占用的PID号 运行时间
    所有的进程都会步入僵尸进程

    父进程不死并且在无限制的创建子进程并且子进程也不结束
    回收子进程占用的pid号 父进程等待子进程运行结束 父进程调用join方法

    孤儿进程
    子进程存活,父进程意外死亡
    操作系统会开设“儿童福利院” 专门管理孤儿进程回收相关资源


    互斥锁
    针对多个进程操作同一份数据的时候会出现数据错乱问题
    针对上述问题,解决方式就是加锁处理,将并发变成串行,牺牲效率保证了数据安全
    扩展 行锁 表锁
    注意:1.锁不要轻易的使用,容易造成死锁现象,我们写代码一般不会用到,都是内部封装好的
    2.锁不要轻易的加,锁只在处理数据的部分加,来保证数据安全(只在争抢数据的时候用到即可)

    进程间的通信
    管道 subprocess
    stdin stdout stderr
    队列 管道+锁
    队列Queue模块
    队列 先进先出
    堆栈 先进后出


    IPC协议

    生产者消费者模型
    生产者 生产或制造东西的
    消费者 消费或处理东西的
    该模型除了上述两个之外还需要一个媒介
    生活中的例子 做包子的做好后把包子放蒸笼里面,买包子的到蒸笼里面拿
    厨师做菜做完后给消费者端过去
    生产者和消费者不是直接做交互的而是借助媒介做交互
    生产者(卖包子的)+消息队列(蒸笼)+消费者(吃包子的)

    线程理论
    致命三问:什么是线程,为何有线程,如何使用?
    什么是线程?
    进程 资源单位
    线程 执行单位
    将操作系统比喻成大的工厂,进程相当于工厂里面的车间
    而线程就是车间里面的流水线
    每一个进程肯定自带一个线程
    再次总结:进程资源单位(起一个进程仅仅只是在内存空间中开辟一块独立的空间)
    线程执行单位(真正被CPU执行的其实是进程里面的线程,线程指的就是代码的执行过程,
    执行代码中所需要使用到的资源都找进程索要)
    进程与线程都是虚拟单位,只是为我们更加方便的描述问题

    为什么有线程?
    开设进程需要1.申请内存空间 耗资源
    2.拷贝代码 耗资源
    开线程 一个进程内可以开设多个线程,在一个进程内开辟多个线程无需申请内存空间及拷贝代码的操作
    总结:开设线程的开销小于开设进程的开销

    荔枝:我们要开发一款文本编辑器
    获取用户输入功能
    实时展示到屏幕的功能
    自动保存硬盘的功能
    针对上面的荔枝,开设进程合适还是线程合适?
    开三个线程处理上面的三个功能更加的合理
    如何使用?
  • 相关阅读:
    LeetCode Merge Two Sorted Lists 归并排序
    LeetCode Add Binary 两个二进制数相加
    LeetCode Climbing Stairs 爬楼梯
    034 Search for a Range 搜索范围
    033 Search in Rotated Sorted Array 搜索旋转排序数组
    032 Longest Valid Parentheses 最长有效括号
    031 Next Permutation 下一个排列
    030 Substring with Concatenation of All Words 与所有单词相关联的字串
    029 Divide Two Integers 两数相除
    028 Implement strStr() 实现 strStr()
  • 原文地址:https://www.cnblogs.com/mayrain/p/12763849.html
Copyright © 2011-2022 走看看