操作系统
进程和线程
进程:
- 进程中的内存是逻辑内存, 所有进程的逻辑内存之和要远远大于物理内存。
- 文件/网络句柄是共享的
线程
- TLS: Thread Local Storage 缓冲区溢出
协程
- 进程之间不可以共享内存, 线程之间可以共享内存
- 进程间的通信方式: 管道,TCP/IP 比较优劣 线程间的通信方式: 共享内存
存储和寻址
存储
寻址空间
每个进程有自己的独立寻址空间 进程独立
- 32位 -> 4G
- 64位 -> ~10^19Bytes 1wPB
- 64位JVM -> 可以使用更大的内存,32 -> 需要重新编译
寻址 int n= *p; -> MOV EAX,[EBX]
把EBX
寄存器中的数据读出,放入EAX
寄存器。n -> EAX, p -> EBX
.
- 逻辑内存的大小与物理内存没有关系,只有操作系统有关。 操作系统的位数决定逻辑内存的位数。
- 逻辑内存映射到物理内存,数据不一定在物理内存中,也可能存在虚拟内存中。
- 当数据在虚拟内存中时候,不是只把逻辑内存对应的数据加载到物理内存,而是把数据所在的分页加载到物理内存。如果物理内存放不下,就交换一部分数据到虚拟内存。