操作系统高频(一)线程与进程

操作系统高频(一)线程与进程

1.什么是线程?进程,线程,彼此有什么区别?⭐⭐⭐

进程

  • 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位。
  • 是操作系统结构的基础。
  • 进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程

  • 线程是操作系统最小的运算调度单位。
  • 线程包含在进程中,是进程中实际执行任务的单位。
  • 在一些操作系统中,线程也被称为轻量级进程

线程和进程区别:

  • 线程是进程的一部分,是进程内的实际执行单位,而进程则是操作系统分配资源的基本单位。
  • 每个进程都有独立的地址空间和系统资源,而线程共享同一进程的地址空间和系统资源。
  • 线程之间的切换比进程之间的切换更快,因为线程共享相同的上下文和资源。
  • 线程间通信更加方便,可以直接读写共享内存,而进程间通信需要通过特定的机制(如管道、消息队列等)。
  • 进程的创建和销毁比线程的开销更大。
  • 进程是相对独立的,一个进程的崩溃不会影响其他进程,而线程是相互依赖的,一个线程的崩溃会导致整个进程的崩溃。

2.什么时候用进程,什么时候用线程?⭐⭐

使用进程的情况:

  1. 需要独立的地址空间和系统资源:如果任务需要运行在独立的环境中,不同任务之间的数据隔离较为重要,那么可以选择使用进程。
  2. 需要更高的安全性和稳定性:如果一个任务的崩溃不应该影响其他任务的正常运行,使用进程可以保证更高的安全性和稳定性。
  3. 并行计算需求:如果任务需要充分利用多核处理器的计算能力,可以通过多个独立的进程并行执行来提高计算效率。

使用线程的情况:

  1. 共享数据和资源:如果任务之间需要共享数据和资源,并且数据同步和通信较为频繁,使用线程可以更方便地访问和操作共享资源。
  2. 轻量级任务:如果任务比较轻量级,且并行执行可以提高效率,使用线程可以进行更快速的切换和调度,减少开销。
  3. 实时性要求:如果任务对实时性要求较高,使用线程可以更快响应事件和处理任务。

3.一个线程占多大内存?⭐⭐⭐

一个线程在Linux系统中大约占用8MB的内存。这是因为Linux系统中的线程栈是通过缺页异常来进行内存分配的,不是所有的栈空间都会被实际分配内存。因此,8MB只是一个上限,实际的内存消耗会略微超过实际需要的内存。这个差额主要是由于内部损耗(每个线程内部的一些开销)所引起的,通常在4KB范围内.

4.说说什么是信号量,有什么作用?⭐⭐

信号量是一种同步机制,它本质上是一个计数器,用于多进程或多线程对共享资源的访问。信号量的主要作用是保护共享资源,使得在一个时刻只有一定数量的进程或线程可以访问。

你可能感兴趣的:(开发语言,操作系统,课程设计,笔记,经验分享)