为了支持多进程(同一时间允许多个进程),解决直接操作内存带来的各种问题,引入了地址空间——允许每个进程都拥有自己的地址,硬件上需要两个寄存器——基址寄存器(保存进程开始地址)和界址寄存器(保存上界,防止内存溢出)。当我们执行一条指令,实际的物理内存地址是根据基址和偏移量来计算得到。而每个进程拥有的地址空间是不同的,因此也就使得多进程成为可能。
考虑到内存大小很难容纳下所有并发执行的进程——交换技术将闲置的进程交换出内存,暂存在硬盘上,待执行时再交换回内存。
页置换算法:最近不常使用算法,FIFO算法,最久未使用算法LRU。
进程的调度、同步等操作通常是由内核来完成,而线程...
单进程多线程/多进程单线程:
- 首先根据共享内存大小来判断:如果共享内存较大,就用多线程,避免cpu cache频繁的换入换出(比如memcached);
- 其次根据自身的业务场景是否有数据共享/单任务拆分并行化需求。
- 通常尽量选用多进程,享受单线程编程带来的便利。