进程和线程的概念。
(1)进程是计算机中因运行程序的实体。
进程是程序的真正运行,用户下达运行程序的命令后,就会产生进程。同一程序可产生 多个进程。
进程有三种基本状态:运行状态、就绪状态、阻塞状态。
(2)线程是程序执行流 的最小单位。一般由线程ID,当前指令指针,寄存器集合和堆栈组成。线程是进程的一个实体,是系统独立调度和分派的基本单位,线程和同它在一个进程下的线程共享内存(但每个线程有自己独立的栈,堆是所有线程共享的)。
线程与进程的区别?
(1)调度:在传统操作系统中,拥有资源和独立调度的基本单位都是进程。引入线程之后,线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引起进程的切换,而不同进程中进行的线程切换,则会引起进程切换。
(2)拥有资源:进程是拥有资源的基本单位,线程不会拥有资源,但线程可以共享其隶属于进程的共享资源。
(3)并发性:进程可以并发执行,而且同一进程内的多个线程也可以并发执行,从而使操作系统具有良好的并发性,大大提高了系统吞吐量。
(4)系统开销:创建和撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备。在进程切换时,涉及当前执行进程CPU环境的保存以及新调度的进程CPU环境的设置;而线程切换时,只需保存和设置少量的寄存器内容。同一进程内的多个线程共享进程的地址空间,因此这些线程之间的同步与通信比较容易实现。
(5)地址空间和其他资源:进程的地址空间之间互相独立,同一进程的各个线程间共享进程的资源,某进程内的线程对于其他进程不可见。
(6)通信方面:进程间通信需要借助操作系统,而线程间可以直接读/写进程数据段来进行通信。
● 典型的调度算法包括:先来先服务(FIFS)、短作业优先算法(SJF)、
优先级调度算法、高响应比优先调度算法、时间片轮转算法、多级反馈队列调度算法。
● 死锁产生的原因和必要条件。
原因: (1)系统资源的竞争。
(2)进程推进顺序非法。
必要条件:
(1)互斥条件。
(2)不剥夺条件。
(3)请求和保持条件。
(4)循环等待条件。
银行家算法是著名的死锁避免算法。
● 常用的置换算法有:最佳置换算法(OPT)、先进先出页面置换算法(FIFO)、最近最久未使用(LRU)置换算法。