2019面试第二弹(关于线程和进程)
1.复习多线程?
同步与互斥
互斥:在多线程条件下,多个线程,独占性的,排他性的 访问临界资源
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
首先,线程是资源调度的基本单位。
同步与异步
同步:线程访问临界资源时,阻塞的访问临界资源。
异步:线程在访问临界资源时不会被阻塞
2.线程与进程
线程 | 进程 | 备注 | |
---|---|---|---|
主要区别 | 线程是调度的基本单位 | 进程是分配资源的基本单位 | |
分配资源 | 1.线程ID 2.PCB控制块3.上下文信息 | 1.线程有的进程都有 2.自己的页表 | |
操作系统看两者 | 线程没有子线程这一说,所有线程都是对等的 | 进程有子进程和父进程,子进程得到的是除了代码段是与父进程共享的意外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,既然为副本,也就是说,二者并不共享地址空间。两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行。(采用写时复制技术)父进程会回收子进程的资源. | 在Linux操作系统中,操作系统在执行起来时其实是无法来判断当前 |
3.僵尸进程,孤儿进程,守护进程
僵尸进程:一个父进程利用fork创建子进程,如果子进程退出,而父进程没有用wait()或者waitpid()来获取子进程的状态信息,那么子进程的状态依然被操作系统管理
孤儿进程:一个父进程退出而它的子进程仍然还在运行,那么这些子进程会编程孤儿进程,孤儿进程将被1号进程所领养
守护进程:(网上有一种说法把守护进程叫做“服务”,也就是windows服务列表跑的程序)守护进程是后台的特殊进程在系统启动时启动,完成任务后自动退出。
4.关于java的进程
在java中也可以创建进程,不过很少使用,大部分在java中用线程Java.lang.Process。java程序运行默认开两个线程,主线程和jvm虚拟线程.
5.进程间通信
管道,FIFO,信号量,共享内存,socket (学java的表示真没操作过进程,线程倒是有各种方式操做,所以这个问题一般我只接回答不会)
网友评论