一、基础

1. 计算机关键的硬件

CPU、内存、I/O控制芯片

2. SMP与多核

SMP: Symmetrical Multi-Processing, 对称多处理器, 指具有多个CPU
多核: 单个CPU, 具有多个核心
从程序开发的角度来看, SMP和多核可以看做是同一个概念

3. 内存

程序直接使用物理内存存在的弊端:

  • 地址空间不隔离
  • 内存使用效率低
  • 程序运行的地址不确定

内存管理常用的技术

  • 虚拟地址
  • 分段
  • 分页

虚拟地址空间(Virtual Address)

  • 每个程序都有独立的虚拟地址空间,32位的系统,虚拟地址空间为0x00000000 - 0xFFFFFFFF
  • 虚拟地址空间同物理内存空间一样,被分页管理,每一页的大小如4kB
  • 虚拟地址空间(虚拟内存)中的页有三种状态:
      映射到物理页面
      位于磁盘中
      未使用的状态
4. 线程

标准线程:CPU的基本调度单位

  • 一个进程可包含有多个线程
  • 线程之间、线程和进程之间共享的数据有
      进程的虚拟地址空间(代码段、数据段、堆等)、进程级的资源(打开的文件、信号)、进程的环境(用户id和组id)
  • 线程独有的
      线程id、上下文(寄存器、PC)、errno变量、调度优先级

Linux线程:从内核的角度来看,Linux进程和线程都是 任务(Task),并没有本质区别

  • Linux进程和线程的创建过程为:fork() -> exec() -> clone()
      clone()函数的flag参数决定了共享哪些资源,也即创建的是进程还是线程

进程和线程的区别

进程——资源分配的最小单位,线程——程序执行的最小单位


线程同步的方法

  • 互斥量(Mutex)
  • 信号量(Semaphore)
  • 条件变量
  • 读写锁
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容