操作系统关键词-进程线程-进程线程通信
是一种系统软件:管理计算机资源(内存CPU)和进程以及硬软件,用户和硬件的桥梁
用户态-内核态-硬件
进程按照页加载内存-按需分页-虚拟内存-缺页异常
虚拟内存-内存分配-数据从RAM-临时传输到磁盘弥补内存不足
程序执行时候如果不存在内存中--OS从硬盘加载进内存
进程就是执行程序的实例,系统资源分配的最小单位,线程是其子任务,是CPU调度的最小单位
比如浏览器进程-tab页面线程
进程持有-独立地址空间,全局变量,打开文件,子进程,即将发生的定时器,大
线程持有程序计数器,寄存器,堆栈,状态,会共享数据,创建撤销切换开销小
独立- 开销-资源分配和CPU调度
实时系统和分时系统,实时分为硬软-硬就是限定时间内完成任务做出响应比如汽车车间,机器人
软就是手机之内的可以偶尔延迟
交互性差-因为专用
分时系统就是
分时系统就是多用户使用一台服务器,轮流讲内存和CPU按照时间切分使用,时间片
交互性-多路性-独立性-及时性
linux是非实时的
调度算法
Round Robin调度算法-时间片轮转调度-进程切换开销大-无法紧急处理
直接时间片按照队列FIFO分配相同部分,完不成直接剥夺加入就绪队列尾部-没有优先级
FCFS-先来先服务-直到完成再释放---利于长作业不利于短作业-没有饥饿抢占
短进程优先-选择运行时间最短的--相反-不抢占会饥饿
优先级调度-优先级最高的----均可
高响应比优先调度-等待时间加-运行时间)/运行时间
I/O密集型和CPU密集型就是谁在等谁
比如数据库的瓶颈就是IO
死锁 - 互斥-保持且等待-独占性不可剥夺--循环等待
银行家算法--每次尝试分配并计算是否分配后会造成死锁发生
RAID, Redundant Array of Independent Disks- 磁盘冗余阵列
有多个级别-容错能力和成本速度--无容错条带化-汉明码纠错-奇偶校验
分布式存储-纠删码
用户态-内核态-硬件
进程按照页加载内存-按需分页-虚拟内存-缺页异常
虚拟内存-内存分配-数据从RAM-临时传输到磁盘弥补内存不足
程序执行时候如果不存在内存中--OS从硬盘加载进内存
进程就是执行程序的实例,系统资源分配的最小单位,线程是其子任务,是CPU调度的最小单位
比如浏览器进程-tab页面线程
进程持有-独立地址空间,全局变量,打开文件,子进程,即将发生的定时器,大
线程持有程序计数器,寄存器,堆栈,状态,会共享数据,创建撤销切换开销小
独立- 开销-资源分配和CPU调度
实时系统和分时系统,实时分为硬软-硬就是限定时间内完成任务做出响应比如汽车车间,机器人
软就是手机之内的可以偶尔延迟
交互性差-因为专用
分时系统就是
分时系统就是多用户使用一台服务器,轮流讲内存和CPU按照时间切分使用,时间片
交互性-多路性-独立性-及时性
linux是非实时的
调度算法
Round Robin调度算法-时间片轮转调度-进程切换开销大-无法紧急处理
直接时间片按照队列FIFO分配相同部分,完不成直接剥夺加入就绪队列尾部-没有优先级
FCFS-先来先服务-直到完成再释放---利于长作业不利于短作业-没有饥饿抢占
短进程优先-选择运行时间最短的--相反-不抢占会饥饿
优先级调度-优先级最高的----均可
高响应比优先调度-等待时间加-运行时间)/运行时间
I/O密集型和CPU密集型就是谁在等谁
比如数据库的瓶颈就是IO
死锁 - 互斥-保持且等待-独占性不可剥夺--循环等待
银行家算法--每次尝试分配并计算是否分配后会造成死锁发生
RAID, Redundant Array of Independent Disks- 磁盘冗余阵列
有多个级别-容错能力和成本速度--无容错条带化-汉明码纠错-奇偶校验
分布式存储-纠删码
全部评论
操作系统中可以拥有多个进程,一个进程里可以拥有多个线程,线程在进程内执行
进程和线程的区别
•容易创建新线程。创建新进程需要重复父进程
•线程可以控制同一进程的其他线程。进程无法控制兄弟进程,只能控制其子进程
•进程拥有自己的内存空间。线程使用进程的内存空间,且要和该进程的其他线程共享这个 空间;而不是在进程中给每个线程单独划分一点空间。
•(同一进程中的)线程在共享内存空间中运行,而进程在不同的内存空间中运行
• 线程可以使用wait(),notify(),notifyAll()等方法直接与其他线程(同一进程) 通信;而,进程需要使用“进程间通信”(IPC)来与操作系统中的其他进程通信。
While these conditions are sufficient to produce a deadlock on single-instance resource systems, they only indicate the possibility of deadlock on systems having multiple instances of resources.[
死锁的四个必要条件是互斥只能一个线程占用一个资源-保持资源并且等待-独占不被剥夺-循环等待
但是满足这四个条件也不一定发生死锁----
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html
因为如果一个等待两个线程的资源释放,四个组成死锁,但是额外一个位于圆圈外,一旦释放就解救死锁了
作业调度是外存和内存之间的调度,发生频率很低,使进程从创建态-就绪态,而进程调度是从内存到CPU的调度,发生频率高,就绪态-运行态
所以作业只是让其具有竞争处理机的机会
作业调度-短作业优先-先来先服务-高响应比
进程调度-时间片轮转调度-优先级调度-多级反馈优先调度
进程的状态:运行态-占据CPU时间片-
就绪态-CPU空闲即可可运行等待再就绪队列中-
阻塞态-等待外部事件发生比如锁的释放
套接字 socket是操作系统内核的一个数据结构,它是网络中节点进行相互通信的门户。网络编程实际上也可以称作套接字编程。
套接字有3种类型:
流式套接字,即TCP套接字,用SOCK_STREAM表示
数据报套接字,即UDP套接字(或称无连接套接字),用SOCK_DGRAM表示
原始套接字,用SOCK_RAM表示
服务器:socket()创建--bind()绑定端口号和IP地址-listen()使服务器的端口和IP处于监听状态-等待网络中客户机连接请求
客户端:socket()-connect()连接服务器-
服务器: accpet()来接受连接请求
write()-send()-read()-recv()-(receive)
close()
线程建的通信主要有
信号-信号量-还有互斥量-临界区
临界区=线程串行访问公共资源的一段代码
互斥量-互斥锁-拥有的才可以访问公共资源
进程通信----信号量-atomicinteger--信号-管道无名亲属有名-主机之间socket-消息队列读写-共享内存
线程修改共同数据-竞态条件-禁止统一时刻-互斥条件
临界资源-一次仅允许一个进程使用的-临界区就是进程中访问临界资源的代码区
为了互斥-不能同时进入临界区-临界区外的进程不得阻塞其他进程-不能无限等待
管道-无名管道-半双工(可以互相发送消息但是同一时刻只能单向发送)固定读写端-是特殊的文件
只用于亲属比如父子进程的通信-有名管道可以用于非亲属
消息队列-链接表-系统的内核-读写权限的进程可以操作消息队列来进行通信
信号量--只是计数器-比如AtomicInteger -可以写多线程达到原子操作,用于同步和互斥
信号--用于接受进程某件事已经发生
共享内存--贡献同一个内存区域
套接字的socket-----用于不用主机的进程的通信
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享