2019面试第二弹(关于线程和进程)

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的表示真没操作过进程,线程倒是有各种方式操做,所以这个问题一般我只接回答不会)

6.虚拟地址空间

你可能感兴趣的:(2019面试第二弹(关于线程和进程))