-
进程和线程的区别
- 线程是进程划分澄更小的运行单位,一个进程在其执行的过程中可以产生多个线程。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护,而进程正相反。
-
进程进的通信方式
- 管道/匿名管道
- 用于具有亲缘关系的父子进程间或者兄弟进程间的通信
- 有名管道
- 没有亲缘关系的也可以通信
- 先进先出
- 有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信
- 信号 signal
- 信号是一种比较复杂的通信方式,可以通知接收进程某个事件已经发生
- 消息队列 message queue
- 消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识
- 信号量 semaphores
- 信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件
- 共享内存
- 套接字 socket
- 管道/匿名管道
-
进程间同步的方式
- 互斥量 mutex
- 信号量 semphares
- 事件 event
- wait/notify
-
进程的调度算法
- 先到先服务
- 短作业优先
- 时间片轮转 Round Robin
- 多级反馈队列调度算法
- 优先级调度
-
操作系统内存管理
- 内存的分配和回收
- 内存管理机制
- 块式管理
- 远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块,每个块 中只包含一个进程。如果程序运行需要内存的话,操作系统就分配给它一块,如果程序运行只需 要很小的空间的话,分配的这块内存很大一部分几乎被浪费了。这些在每个块中未被利用的空 间,我们称之为碎片。
- 页式管理
- 把主存分为大小相等切固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。⻚式管理通过⻚表对应逻辑地址和物理地址。
- 段式管理
- ⻚式管理虽然提高了内存利用率,但是⻚式管理其中的⻚实际并无任何实际意义。 段式管理把主存分为一段段的,每一段的空间又要比一⻚的空间小很多 。但是,最重要的是段 是有实际意义的,每个段定义了一组逻辑信息,例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理地址。
- 段页式管理
- 简单来说段⻚式管理机制就是把主存先分成若干段,每个段又分成若干⻚, 也就是说 段⻚式管理机制 中段与段之间以及段的内部的都是离散的。
- 块式管理
- 快表和多级页表
- 快表:虚拟地址到物理地址的转换要快
- 多级页表:解决虚拟地址空间大,页表也会很大的问题
- 地址转换流程:
- 根据虚拟地址中的⻚号查快表
- 如果该⻚在快表中,直接从快表中读取相应的物理地址
- 如果该⻚不在快表中,就访问内存中的⻚表,再从⻚表中得到物理地址,同时将⻚表中的该映射表项添加到快表中
- 当快表填满后,又要登记新⻚时,就按照一定的淘汰策略淘汰掉快表中的一个⻚
- 分页机制和分段机制有哪些共同点和区别
- 共同点
- 都是为了提高内存利用率,较少内存碎片
- 页和段都是离散存储,所以两者都是离散分配内存的方式。但是,每个页和段中的内存是连续的
- 区别
- 页的大小是固定的,由操作系统决定的;而段的大小不固定,取决于我们当前运行的程序
- 分页仅仅是为了满足操作系统内存管理的需求,而段是逻辑信息的单位,在程序中可以体现为代码段,数据段,能够更好满足用户的需要
- 共同点
- 页面置换算法
- OPT页面置换算法:最佳页面置换算法--是无法实现的
- FIFO 先进先出
- LRU (least currently used)
- LFU (least frequently used)