操作系统 3 多进程与多线程

1 数据传输 1.1 传输场景 父子进程 陌生进程 1.2 传输接口 1.3 传输示例 2 并发控制 2.1 并发场景 整型 多写 一写多读 多写一读 多写多读 数据 多写 多读 一写多读 多写一读 多写多读 2.2 并发接口 (glibc) 一、自选锁 #include <pthread.h> pthread_spinlock_t spin; pthread_spin_init(&spin, PTHREAD_PROCESS_PRIVATE); pthread_spin_lock(&spin); pthread_spin_unlock(&spin); 二、互斥锁 #include <pthread.h> pthread_mutex_t lock; pthread_mutexattr_t attr; thread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL); pthread_mutex_init(&lock, &attr); pthread_mutex_lock(&lock); pthread_mutex_unlock(&lock); 三、读写锁 #include <pthread.h> pthread_mutex_t rdlock; pthread_mutexattr_t attr; pthread_rwlockattr_init(&attr); pthread_rwlockattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); pthread_rwlock_init(&rdlock, &attr); pthread_rwlock_rdlock(&rdlock); pthread_rwlock_wrlock(&rdlock); pthread_rwlock_unlock(&rdlock); 四、信号量 #include <semaphore.h> sem_t sem; sem_init(&sem, 0, 8); sem_wait(&sem); sem_post(&sem); 五、原子写 #include <pthread.h>/* C 11 */ volatile unsigned num = 0; __atomic_store_n(&num, 8, __ATOMIC_SEQ_CST); unsigned cur = __atomic_load_n(&num, __ATOMIC_SEQ_CST); 2.3 并发代码 整型数据 ...

December 17, 2025 · 2 min · 224 words · Me

操作系统 1 总结

目录 架构 CPU 内存管理 进程线程 文件系统 目录 1 CPU结构 1.1 CPU结构 1.2 CPU寻址 2 内存管理 2.1 内存申请 2.2 内存寻址 3 进程管理 3.1 进程结构 3.2 进程调度 一、中断和异常 二、中断处理 三、系统调用 3.2 进程通信 3.3 锁 4 文件管理 5 设备管理 1 CPU结构 1.1 CPU结构 1.2 CPU寻址 5种寻址方式 直接寻址 : [1] 寄存器间接寻址 [bx] 寄存器相对寻址 [bx + 1] 基址变址寻址 [bx + si] 相对基址变址寻址 [bx + si + 1] 2 内存管理 2.1 内存申请 libc内部free list libc申请新逻辑页 内核使用伙伴算法,分配物理页,插入页表 ...

January 21, 2025 · 2 min · 349 words · Me

操作系统 2 原理

目录 架构 CPU 内存管理 进程线程 文件系统 目录 0 架构 0.1 OS功能 0.2 OS特征 0.3 OS结构 0.4 OS分类 1 CPU 1.1 CPU 结构 1.2 寄存器 1.3 汇编指令 1.4 程序 1.5 操作系统 2 内存管理 结构 3 进程线程 1.1 概述 2 进程通信 2.1 分类 2.1 代码 一 信号 二 信号量 (Posix) 三 消息队列 四 管道 五 共享内存 六 套接字 2.3 命令 4 文件系统 0 架构 0.1 OS功能 从资源管理角度划分: 进程/线程管理 内存管理 文件管理 设备管理 用户接口 0.2 OS特征 并发 共享 虚拟 随机:不可预测的事件,状态随机 0.3 OS结构 整体架构: ...

January 21, 2025 · 9 min · 1758 words · Me
心情不好的时候可以点一下 🐱
×
🤖 Doubao AI ×
Hi! 我是你的技术助手。关于代码、架构或 Bug,随时问我!🚀