操作系统的作用:
1.把硬件丑陋复杂的接口隐藏起来,为应用程序提供良好接口
2.管理,调用进程,并且把进程之间对硬件的竞争变得有序化

多道技术:
1.产生背景:为了实现单cpu下的并发效果
2.分为两部分:
1:空间上的复用(必须实现硬件层面的隔离)
2:时间上的复用(复用cpu的时间片)
什么切换?
1:正在执行的任务遇到的阻塞
2:正在执行的任务运行时间过长

进程:正在运行的一个过程/一个任务,由操作系统负责调用,然后由cpu负责执行
程序:就是程序员写的代码
并发:伪并行,单核+多道
并行:只有多核才能实现真正的并行

同步:打电话,一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行
异步:发短信,一个进程在执行某个任务时,另外一个进程无需等待其执行完毕,就可以继续执行,当有消息返回时,系统会通知后者进行处理,这样可以提高执行效率

进程的创建:
1. 系统初始化
2. 与用户交互
3. 在执行一个进程的过程中调用(Popen,os.fork)
4.批处理任务

系统的调用:
linux:fork
win:CreateProcess

linux的下的进程与windows下的区别:
1:linux的进程有父子关系,是一种树形结构,windows没有这种关系
2:linux创建新的进程需要copy父进程的地址空间,win下从最开始创建进程,两个进程之间就是不一样




线程:一条流水线的执行过程是一个线程,一条流水线必须属于一个车间,一个车间的运行过程就是一个进程
(一个进程内至少一个线程)
进程是资源单位
而线程才是cpu上的执行单位

多线程:一个车间内有多条流水线,多个流水线共享该车间的资源(多线程共享一个进程的资源)

线程创建的开销要远远小于进程

为何要创建多线程?
1. 共享资源
2. 创建开销小

多线程模拟文件编辑器

#!/usr/bin/python
# -*- coding:utf-8 -*-
from threading import Thread
msg_l=[]
format_l=[]
def talk():
    while True:
        msg=input('>>: ').strip()
        if not msg:continue
        msg_l.append(msg)

def format():
    while True:
        if msg_l:
            res=msg_l.pop()
            res=res.upper()
            format_l.append(res)

def save():
    while True:
        if format_l:
            res=format_l.pop()
            with open('db.txt','a',encoding='utf-8') as f:
                f.write('%s\n' %res)

if __name__ == '__main__':
    t1=Thread(target=talk)
    t2=Thread(target=format)
    t3=Thread(target=save)
    t1.start()
    t2.start()
    t3.start()
多线程模拟文件编辑器

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-04
猜你喜欢
  • 2021-12-23
  • 2022-12-23
  • 2021-11-27
  • 2021-08-25
  • 2022-12-23
  • 2021-05-25
  • 2021-11-01
相关资源
相似解决方案