ToolkitX
知识库工具箱

操作系统基础

进程、线程、内存管理、调度

30min·进阶

01. 进程与线程

操作系统通过进程和线程实现并发执行。 进程: - 资源分配的基本单位 - 独立的地址空间 - 进程间通信(IPC):管道、共享内存、消息队列 线程: - CPU 调度的基本单位 - 共享进程的地址空间 - 线程间同步:互斥锁、信号量
python
# Python 进程示例
import multiprocessing
import os

def worker():
print(f"子进程 PID: {os.getpid()}, 父进程 PID: {os.getppid()}")

if __name__ == '__main__':
print(f"主进程 PID: {os.getpid()}")

# 创建进程
processes = []
for i in range(3):
    p = multiprocessing.Process(target=worker)
    processes.append(p)
    p.start()

# 等待进程完成
for p in processes:
    p.join()

# Python 线程示例
import threading
import time

def print_time(name, delay):
for i in range(3):
    time.sleep(delay)
    print(f"{name}: {time.ctime()}")

# 创建线程
t1 = threading.Thread(target=print_time, args=("Thread-1", 2))
t2 = threading.Thread(target=print_time, args=("Thread-2", 3))

t1.start()
t2.start()

# 等待线程完成
t1.join()
t2.join()

02. 内存管理

操作系统负责内存的分配和管理。 内存管理技术: - 虚拟内存:每个进程有独立的地址空间 - 分页:将内存分成固定大小的页 - 分段:按逻辑单位划分内存 - 页面置换:内存不足时换出页面
text
# 虚拟内存概念
# 每个进程有独立的虚拟地址空间
# 通过页表映射到物理内存

# 进程虚拟地址空间布局(Linux x86-64)
# +------------------+
# |      栈          | <- 向下增长(局部变量、函数调用)
# |                  |
# +------------------+
# |      ↓           |
# |                  |
# |      ↑           |
# +------------------+
# |      堆          | <- 向上增长(动态分配)
# +------------------+
# |      BSS        | <- 未初始化全局变量
# +------------------+
# |      数据段      | <- 已初始化全局变量
# +------------------+
# |      代码段      | <- 程序代码(只读)
# +------------------+

# 页面置换算法
# FIFO:先进先出
# LRU:最近最少使用
# LFU:最不经常使用
# Clock:时钟算法

# 碎片问题
# 内碎片:分配给进程的内存大于实际需要
# 外碎片:内存中存在大量小的空闲块

# 解决方案
# 分页:消除外碎片
# 段页式:结合分段和分页的优点

03. 文件系统

文件系统负责组织和管理存储设备上的数据。 文件系统类型: - ext4:Linux 默认文件系统 - NTFS:Windows 文件系统 - APFS:Apple 文件系统 - FAT32:通用但有大小限制 文件系统结构: - 超级块:文件系统元数据 - inode:文件元数据(不包含文件名) - 数据块:实际文件内容 - 目录项:文件名到 inode 的映射
bash
# Linux 文件系统操作

# 查看文件系统信息
df -h                    # 磁盘空间使用
df -T                    # 文件系统类型
mount                    # 挂载点信息

# inode 信息
ls -i file.txt           # 查看 inode 号
stat file.txt            # 详细 inode 信息
df -i                    # inode 使用情况

# 文件类型
ls -la
# - 普通文件
# d 目录
# l 符号链接
# b 块设备
# c 字符设备
# p 命名管道
# s 套接字

# 文件权限
chmod 755 file.txt       # rwxr-xr-x
chmod u+x file.txt       # 给所有者添加执行权限
chown user:group file    # 修改所有者和组

# 硬链接和软链接
ln source link_name      # 硬链接
ln -s source link_name   # 软链接(符号链接)

# 硬链接:共享 inode,不能跨文件系统
# 软链接:独立 inode,存储目标路径

知识测验

1/4正确 0

进程和线程的主要区别是什么?

下一节

编译原理入门

下一节