什么是操作系统
操作系统本质上是一个运行在计算机上的软件程序 ,她负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。
进程和线程和协程的区别
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位
线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位
进程与线程区别:线程共享进程的地址资源空间,而进程与进程之间是独立的地址资源空间。线程共享本进程的io,cpu等资源,而进程与进程之间独立享有资源。多进程要比多线程要健壮。进程相互独立,而线程则会相互影响。
线程与携程的区别
一个线程也可以拥有多个协程。其执行过程更类似于子例程。协程避免了无意义的调度,由此可以提高性能。
进程有哪几种状态
创建状态:进程正在被创建。进程申请一个空白的pcb,并向pcb中填写用于控制和管理进程的消息,然后为进程分配运行时所必需的资源。
就绪状态:进程已经分配到除了cpu以外的所有必要资源,一旦分配到便可以立即执行。
运行状态:进程获得cpu
阻塞状态:正在执行的进程由于发生某事件(io请求,申请缓冲区失败)暂时无法继续执行的状态。
结束状态:将pcb清零并还给系统。
创建状态如果获得许可-》就绪状态,就绪状态进行进程调度就到了执行状态,执行状态时间片完就变为就绪状态,执行状态发送io请求时会变为阻塞状态,阻塞状态io完成变成就绪状态,执行状态释放资源变成终止状态
进程间的通信方式:
管道:用于父子进程之间或者兄弟之间的通信。
有名管道:可以用于没有亲缘关系之间的通信,严格遵守队列先进先出的规则。
信号:通知或者接收某个时间已经发生
消息队列:链表消息队列克服了信号承载量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
信号量:用于多进程对共享数据的访问,主要解决与同步相关的问题并避免竞争条件。
套接字(socket) 主要用于cs通过网络进行通信。用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源,使得资源在一个时刻只有一个进程独享。
共享内存:使多个进程访问同一块内存空间,不同进程之间可以看到对方数据的更新。
死锁
什么是死锁
多个进程,线程同时被阻塞,他们中的一个或者全部都在等待某个资源被释放,他们都在进行无限等待。所以程序产生死锁。