1.为什么进程崩溃不会对其他进程产生很大影响
2.你说到进程是分配资源的基本单位,那么这个资源指的是什么?
3.讲下为什么进程之下还要设计线程?
4.多线程比单线程的优势,劣势?
5.多线程是不是越多越好,太多会有什么问题?
6.进程切换和线程切换的区别?
7.线程切换为什么比进程切换快,节省了什么资源?
8.线程切换详细过程是怎么样的?上下文保存在哪里?
9.进程的状态(五种状态),如何切换?
10.进程上下文有哪些?
1.为什么进程崩溃不会对其他进程产生很大影响?
进程崩溃通常不会对其他进程产生很大影响,因为现代操作系统为进程提供了 内存隔离 和 资源独立性。
每个进程运行在自己的 虚拟地址空间 中,并且有独立的资源(如文件描述符、网络连接等)。
这样即使一个进程崩溃,也不会直接访问或修改其他进程的内存或资源。操作系统的 进程调度机制 会检测到崩溃进程并释放其资源,而其他进程可以继续正常运行。
这种设计提高了系统的 稳定性 和 可靠性。
2.你说到进程是分配资源的基本单位,那么这个资源指的是什么?
内存资源,文件描述符,信号处理器,IO缓冲区,进程控制块(PCB)。
内存资源 :虚拟地址空间(每个进程有自己的内存空间);堆和栈内存。
文件描述符 :打开的文件或流(如输入输出文件、套接字)。
CPU时间片 : 每个进程按调度分配独立的CPU执行时间。
信号处理器 :每个进程独立设置的信号处理函数。
线程 :进程内的线程属于该进程专有,互相共享资源,但与其他进程隔离。
环境变量和全局变量 :每个进程维护自己的环境变量副本。
I/O缓冲区 :进程进行文件或网络操作时拥有自己的缓冲区
进程控制块(PCB) :操作系统为每个进程维护的独立结构,存储进程的状态信息。
3.讲下为什么进程之下还要设计线程?
进程之下设计线程是为了提高程序的并发性和资源利用效率 ,从而更好地适应多核处理器和复杂应用的需求。主要是进程要切换速度慢,复杂程度高,且进程之间通信问题和共享数据问题比较难以解决。因此,需要线程,其更轻量级的线程切换,并且同一进程的线程可以共享数据。
4.多线程比单线程的优势,劣势?
多线程比单线程的优势:提高程序的运行效率,可以充分利用多核处理器的资源,同时处理多个任务,加快程序的执行速度。
多线程比单线程的劣势:线程切换的消耗,锁机制的复杂,死锁危机。 存在多线程数据竞争访问的问题,需要通过锁机制来保证线程安全,增加了加锁的开销,并且还会有死锁的风险。多线程会消耗更多系统资源,如CPU和内存,因为每个线程都需要占用一定的内存和处理时间。
5.多线程是不是越多越好,太多会有什么问题?
不是。线程多,线程竞争CPU越激烈,切换越多消耗越大,并且死锁发生的概率越大。
6.进程切换和线程切换的区别?
进程切换:进程切换涉及到更多的内容,包括整个进程的地址空间、全局变量、文件描述符等。 因此,进程切换的开销通常比线程切换大。
线程切换**:线程切换只涉及到线程的堆栈、寄存器和程序计数器等** ,不涉及进程级别的资源,因此线程切换的开销较小。
7.线程切换为什么比进程切换快,节省了什么资源?
线程切换比进程切换快是因为线程共享同一进程的地址空间和资源,线程切换时只需切换堆栈和程序计数器等少量信息 ,而不需要切换地址空间,避免了进程切换时需要切换内存映射表等大量资源的开销,从而节省了时间和系统资源。
8.线程切换详细过程是怎么样的?上下文保存在哪里?
9.进程的状态(五种状态),如何切换?
创建-就绪-运行-阻塞-结束
10.进程上下文有哪些?
各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。 进程上下文包括处理器状态(寄存器)、内存映射(页表、段表)、资源信息和PCB中的调度和管理信息。在进程切换时,操作系统保存当前进程的上下文到PCB,加载新进程的上下文,使其继续运行。