程序员的自我修养—第一章

来源:互联网 发布:美柚 app 数据库设计 编辑:程序博客网 时间:2024/05/17 04:11

1、计算机软件系统
应用层—application programming interface —》 运行库—system call interface(以软件中断的方式提高)
—》操作系统—hardware specification—》硬件

2、操作系统有两个功能: 1、提供抽象滴接口;2、管理硬件资源。

3、计算机硬件资源主要分为 CPU、存储器(包括内存与磁盘)和io设备。

4、操作系统的发展: 多道程序(multiprogramming)——》分时系统 (time-sharing system)
   ——》多任务系统(multi-tasking system) (操作系统运行在受硬件保护的级别,所以应用程序都以进程的方式运行)
 
5、硬盘基本存储单位为扇区(sector),每个扇区一般为512字节。
   为了屏蔽复杂的硬件细节,现代的硬盘普遍使用LBA(logical block address)的方式,即整个硬盘中所有的扇区从0开始
   编号,一直到最后一个扇区,这个扇区编号叫做逻辑扇区号,硬盘滴电子设备负责转换成实际滴盘面、磁道等位置。

6、文件读取过程: read系统调用——》文件系统调用——》磁盘驱动程序调用——》发出硬件命令

 

7、进程的总体目标是希望每个进程从逻辑上来看都可以独占计算机的资源。

8、物理内存: 1、地址空间不隔离;2、内存使用率低;3、程序运行的地址不确定。

9、虚拟地址:每个进程都有自己独立的虚拟空间,而且只能访问自己的地址空间。

10、地址空间分两种: 虚拟地址空间(virtual address space)、物理地址空间(physical address space) 。

11、分段(segmentation):基本思路是把一段与程序所需空间滴内存大小的虚拟地址映射到某个物理地址空间上。

 

12、分页(paging):分页的基本方法是把地址空间人为地分成固页的定大小滴页,每一页滴大小由硬件决定,操作系统只可以选择一种,
    所以页滴大小是固定滴,一般是4kb。

13、页映射: 指 进程虚拟空间、物理空间和磁盘之间滴页映射关系。(提高内存利用率,硬件本身也支持以页为单位的操作模式)

14、虚拟存储的实现需要mmu的支持。

 

15、线程:线程是程序执行流滴最小单位。 由线程id、当前指令指针(pc)、寄存器组合和堆栈组成。各个线程之间共享进程滴内存空间
    (包括代码段、数据段、堆等)及一些进程及的资源(如打开滴文件和信号)。
    线程滴私有数据包括: 线程栈、线程局部存储空间、寄存器。

16、一个不断在处理器上切换不同线程的行为称之为线程调度(thread schedule)。
    线程拥有至少3种状态:运行(running)、就绪(ready)、等待(waiting)。

17、linux创建一个任务滴方法:fork、exec、clone。  采用cow(copy on write)技术,只有写时才会复制一份内存空间。

18、线程安全的目的是保证数据滴一致性。 我们把单指令的操作成为原子的(atomic),

19、同步:
   二元信号量(binary semaphone)(只有0、1状态,可被其它线程唤醒)。
   信号量(semaphone)),一个初始化值为N的信号量允许N个线程并发执行。
   互斥量(mutex),和二元信号量类似,不同在与,它必须是谁获得谁释放。
   临界区(critical section),临界区滴作用范围仅限于笨进程,其它进程无法获得搞锁。除此之外,和mutex相同。
   读写锁(ready-write lock),对于读取频繁,而仅仅偶尔写入滴情况,其它同步方式非常低效。读写锁可以解决这个问题。
   条件变量(condition variable),线程可以等待条件变量,也可以唤醒条件变量。 当事件发生时(条件变量被唤醒),
                   所有滴线程一起恢复运行。
20、一个函数要被重入,只有两种情况: 1、多个线程同时执行这个函数。 2、函数调用自身。


21、volatile滴作用:
 1、阻止编译器为了提高速度将一个变量缓存到寄存器内而不写回。


22、线程模型:
 1、一对一(用户线程与内核线程)
 2、一对多
 3、多对多

  

原创粉丝点击