操作系统

进程和线程

进程:

  • 进程中的内存是逻辑内存, 所有进程的逻辑内存之和要远远大于物理内存。
  • 文件/网络句柄是共享的

线程

  • TLS: Thread Local Storage 缓冲区溢出

协程

  1. 进程之间不可以共享内存, 线程之间可以共享内存
  2. 进程间的通信方式: 管道,TCP/IP 比较优劣 线程间的通信方式: 共享内存

存储和寻址

存储

寻址空间

每个进程有自己的独立寻址空间 进程独立

  • 32位 -> 4G
  • 64位 -> ~10^19Bytes 1wPB
  • 64位JVM -> 可以使用更大的内存,32 -> 需要重新编译

寻址 int n= *p; -> MOV EAX,[EBX]EBX寄存器中的数据读出,放入EAX 寄存器。n -> EAX, p -> EBX.

  • 逻辑内存的大小与物理内存没有关系,只有操作系统有关。 操作系统的位数决定逻辑内存的位数。
  • 逻辑内存映射到物理内存,数据不一定在物理内存中,也可能存在虚拟内存中。
  • 当数据在虚拟内存中时候,不是只把逻辑内存对应的数据加载到物理内存,而是把数据所在的分页加载到物理内存。如果物理内存放不下,就交换一部分数据到虚拟内存。