《程序员自我修养--第一章》待续。。。

2016-08-11  本文已影响12人  杰米

CPU

内存 推荐阅读

地址空间

32位的cpu物理地址空间为2^32字节(这里不理解)
0x00000000~0xFFFFFFFF

直接使用物理地址空间的弊端:

虚拟地址空间(物理地址的映射)

虚拟地址空间是指虚拟的,人们想象出来的地址空间,其实并不存在,每个进程都有独立的地址空间,每个进程都有独立的虚拟空间,每个进程只能访问自己的地址空间,这样做到了进程的隔离

分页的基本方法是把地址空间人为等分成固定大小的页。
32位的虚拟地址空间按4KB分页,有1048576个页。

虚拟储存实现靠硬件支持,不同CPU不同,几乎都采用MMU(Memory Management Unit)来进行页影射。
CPU发出虚拟地址,经过MMU变成物理地址。

线程

一个标准的线程由线程ID,当前指令指针(PC)、寄存器集合和栈堆组成,各线程共享程序内存空间(包括代码段,数据段,堆)等资源

Linux多线程

fork

fork函数复制当前线程

pid_t pid;
if (pid = fork())

fork调用欧,新任务和本任务一起从fork函数返回,但不同的事本任务的fork将返回新任务的pid,而新任务返回0.
fork不复制原任务的内存空间,而是共享一个写时复制的内存空间,除非任意一个任务对内存修改,内存会复制一份提供给修改方单独使用

fork和exec通常用于产生新任务,如果要产生新线程,可以使用clone

上一篇下一篇

猜你喜欢

热点阅读