测试八股文-操作系统02

进程和线程

  • 进程:是计算机系统中一个执行整体,代表了程序在执行过程中的一个独立的运行环境。每个进程都有自己独立的内存空间,包括代码、数据和堆栈。这使得进程之间相互隔离,一个进程的错误不会直接影响其他进程。进程之间的通信需要使用一些特定的通信机制,如管道、消息队列、共享内存等。
  • 线程:是进程中的一个执行单元,一个进程可以包含多个线程(但只有一个主线程)。线程共享进程的内存空间,包括代码和数据,但拥有自己的堆栈。线程可以更轻量级地创建、销毁和切换,因此多线程可以更高效地利用系统资源。线程之间可以更容易地通信,因为它们共享同一进程的内存空间。
  • 区别:
    1. 资源分配和隔离:进程之间有独立的内存空间,一个进程的崩溃不会影响其他进程。线程共享同一进程的内存空间,一个线程的错误可能影响同一进程中的其他线程。
    2. 创建和销毁开销:进程的创建和销毁开销相对较大,涉及到资源分配和初始化。线程的创建和销毁开销较小,因为它们共享进程的资源。
    3. 切换开销:进程切换的开销较大,因为需要切换不同的内存空间。线程切换的开销较小,因为它们共享内存空间。
    4. 通信机制:进程之间的通信需要复杂的机制,如管道、消息队列、共享内存等。程之间可以通过共享内存更容易地进行通信。
    5. 适用场景:进程适用于需要高度隔离、独立运行的情况,如不同的应用程序。线程适用于需要共享数据和更高效的并发操作,如在同一应用程序内的不同任务。

创建线程的方式

import threading

# 定义线程执行体
def function():
    for i in range(5):
        print(f"This is thread: {i+1}")

# 创建线程对象
my_thread = threading.Thread(target=function)
# 启动线程
my_thread.start()
# 等待线程完成
my_thread.join()
print("Main thread finished")

"""
# 输出结果
This is thread: 1
This is thread: 2
This is thread: 3
This is thread: 4
This is thread: 5
Main thread finished
"""

在这个简单的示例中,由于function函数的操作不涉及共享资源或竞争条件,因此在实际执行中,输出通常会按顺序显示。但是,线程的执行顺序不是固定的,线程调度由操作系统决定。因此,尽管在这个示例中输出通常是按顺序的,但并不保证始终如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值