网络和操作系统

1、进程和线程的区别?
? 调度:进程是资源管理的基本单位,线程是程序执行的基本单位。
? 切换:线程上下文切换比进程上下文切换要快得多。
? 拥有资源: 进程是拥有资源的一个独立单位,线程不拥有系统资源,但是
可以访问隶属于进程的资源。
? 系统开销: 创建或撤销进程时,系统都要为之分配或回收系统资源,如内
存空间,I/O 设备等,OS 所付出的开销显著大于在创建或撤销线程时的开
销,进程切换的开销也远大于线程切换的开销。

2、协程与线程的区别?
? 线程和进程都是同步机制,而协程是异步机制。
? 线程是抢占式,而协程是非抢占式的。需要用户释放使用权切换到其他协
程,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力。
? 一个线程可以有多个协程,一个进程也可以有多个协程。
? 协程不被操作系统内核管理,而完全是由程序控制。线程是被分割的 CPU
资源,协程是组织好的代码流程,线程是协程的资源。但协程不会直接使
用线程,协程直接利用的是执行器关联任意线程或线程池。
? 协程能保留上一次调用时的状态。

3、并发和并行有什么区别?
并发就是在一段时间内,多个任务都会被处理;但在某一时刻,只有一个任务
在执行。单核处理器可以做到并发。比如有两个进程 A 和 B,A 运行一个时间片之后,切换到 B,B 运行一个时间片之后又切换到 A。因为切换速度足够
快,所以宏观上表现为在一段时间内能同时运行多个程序。
并行就是在同一时刻,有多个任务在执行。这个需要多核处理器才能完成,在
微观上就能同时执行多条指令,不同的程序被放到不同的处理器上运行,这个
是物理上的多个进程同时进行。

4、进程与线程的切换流程?
进程切换分两步:
1、切换页表以使用新的地址空间,一旦去切换上下文,处理器中所有已经缓存
的内存地址一瞬间都作废了。
2、切换内核栈和硬件上下文。
对于 linux 来说,线程和进程的最大区别就在于地址空间,对于线程切换,第
1 步是不需要做的,第 2 步是进程和线程切换都要做的。
因为每个进程都有自己的虚拟地址空间,而线程是共享所在进程的虚拟地址空
间的,因此同一个进程中的线程进行线程切换时不涉及虚拟地址空间的转换。

5、为什么虚拟地址空间切换会比较耗时?
进程都有自己的虚拟地址空间,把虚拟地址转换为物理地址需要查找页表,页
表查找是一个很慢的过程,因此通常使用 Cache 来缓存常用的地址映射,这样
可以加速页表查找,这个 Cache 就是 TLB(translation Lookaside Buffer,
TLB 本质上就是一个 Cache,是用来加速页表查找的)。
由于每个进程都有自己的虚拟地址空间,那么显然每个进程都有自己的页表,
那么当进程切换后页表也要进行切换,页表切换后 TLB 就失效了,Cache 失效
导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程
序运行会变慢,而线程切换则不会导致 TLB 失效,因为线程无需切换地址空
间,因此我们通常说线程切换要比较进程切换块,原因就在这里。

6、进程间通信方式有哪些?
管道:管道这种通讯方式有两种限制,一是半双工的通信,数据只能单向流
动,二是只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进
程关系。
管道可以分为两类:匿名管道和命名管道。匿名管道是单向的,只能在有亲缘
关系的进程间通信;命名管道以磁盘文件的方式存在,可以实现本机任意两个
进程通信。
信号:信号是一种比较复杂的通信方式,信号可以在任何时候发给某一进程,
而无需知道该进程的状态。
Linux 系统中常用信号:
(1)SIGHUP:用户从终端注销,所有已启动进程都将收到该进程。系统缺省状
态下对该信号的处理是终止进程。
(2)SIGINT:程序终止信号。程序运行过程中,按 Ctrl+C 键将产生该信号。
(3)SIGQUIT:程序退出信号。程序运行过程中,按 Ctrl+\\键将产生该信
号。(4)SIGBUS 和 SIGSEGV:进程访问非法地址。
(5)SIGFPE:运算中出现致命错误,如除零操作、数据溢出等。
(6)SIGKILL:用户终止进程执行信号。shell 下执行 kill -9 发送该信号。
(7)SIGTERM:结束进程信号。shell 下执行 kill 进程 pid 发送该信号。
(8)SIGALRM:定时器信号。
(9)SIGCLD:子进程退出信号。如果其父进程没有忽略该信号也没有处理该信
号,则子进程退出后将形成僵尸进程。
? 信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访
问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也
访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步
手段。
? 消息队列:消息队列是消息的链接表,包括 Posix 消息队列和 System V 消
息队列。有足够权限的进程可以向队列中添加消息&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值