操作系统二

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.拷贝代码 耗资源
开线程 一个进程内可以开设多个线程,在一个进程内开辟多个线程无需申请内存空间及拷贝代码的操作
总结:开设线程的开销小于开设进程的开销

荔枝:我们要开发一款文本编辑器
获取用户输入功能
实时展示到屏幕的功能
自动保存硬盘的功能
针对上面的荔枝,开设进程合适还是线程合适?
开三个线程处理上面的三个功能更加的合理
如何使用?

猜你喜欢

转载自www.cnblogs.com/mayrain/p/12763849.html