操作系统高频面试问题总结

进程与线程的区别和联系

link
进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
(4)处理机分给线程,即真正在处理机上运行的是线程。
(5)线程是指进程内的一个执行单元,也是进程内的可调度实体。
线程与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
(4)系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。

一个进程可以创建多少线程,和什么有关

在32位Linux下,理论上,一个进程可用虚拟空间是3G,默认情况下,线程的栈的大小是10MB,所以理论上最多只能创建300多个线程。如果要创建多于300的话,必须修改编译器的设置。
一个进程可以创建的线程数由可用虚拟空间和线程的栈的大小共同决定,只要虚拟空间足够,那么新线程的建立就会成功。如果需要创建超过300以上的线程,减小你线程栈的大小就可以实现了。

一个程序从开始运行到结束的完整过程(四个过程)

1.操作系统在创建进程后,把控制权交到程序的入口,这个入口往往是运行库中的某个入口函数
2.入口函数对运行库和程序运行环境进行初始化,包括堆、I/O、线程、全局变量的构造
3.入口函数在完成初始化后,调用main函数,正式开始执行程序主体部分
4.main函数执行完毕后,返回到入口函数,入口函数进行清理工作,包括全局变量析构、堆销毁、关闭I/O等,然后系统调用结束进程

预处理:读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。
编译:通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
汇编:实际上指把汇编语言代码翻译成目标机器指令的过程。
链接:主要分为两种:静态链接和动态链接;
静态链接:后缀是.a,主要在编译的时候将库文件里面代码搬迁到课执行的文件中;
动态链接:后缀是.so,主要在执行的时候将需要的库文件代码搬迁到可以执行的文件中;
link

进程通信方法(Linux和windows下),线程通信方法(Linux和windows下)

同步进程通信:管道、FIFO(命名管道)、消息队列、共享内存、信号量(用于进程同步)、socket套接字
异步进程通信:信号

线程互斥和同步的方法
互斥:互斥量、读写锁、自旋锁
同步:轮询结合互斥量、条件变量、信号量、屏障

文件读写使用的系统调用

link

怎么回收线程

pthread_join函数

守护进程、僵尸进程和孤儿进程

一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。

一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。
link

处理僵尸进程的两种经典方法

1.调用fork两次(第一次调用产生一个子进程,第二次调用fork是在第一个子进程中调用,同时将父进程退出(第一个子进程退出),此

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值