《程序员修养与连接》 阅读笔记

一、温故知新

1.理解x86平台下的,系统软件背后的原理

2.由于cup频率的提升导致内存跟不上cpu的速度,于是产生了与内存频率一致的系统总线

3.由于图形化操作系统的发展,特别是3D游戏和多媒体的发展,使得图形芯片和cpu,内存之间有大量的数据交换,慢速的IO总线无法满足图形设备的巨大需求,人们设计了高速的北桥芯片使他们之间能够高速的交换数据.

4.为了处理低速的设备,人们设计了南桥芯片,处理,磁盘,usb,键盘鼠标.由南桥汇总之后连接到北桥.

5.目前cpu的频率可以达到4GHZ

6.由于一些问题不能进行拆分所以,有时使用多CPU处理器不能达到提速的效果,大型的数据库和网络服务器上,由于大量的数据的请求,而且各个请求之间,是相互独立的,这个时候可以使用多cpu的处理器.

7.系统软件可以分为两个部分:一个是平台性的,操作系统,内核驱动,和一些系统工具,运行库;另一块是用于程序开发的,编译器,连接器,汇编器,等开发工具.

主要讲解,连接器,和库(包括运行库,和开发库)

8.应用程序的编程接口是有运行库,提供的,什么样的运行库,提供什么样的编程接口。linux下的Glibc库提供linux下的api,windows下的运行库提供windows下的api。运行库,使用操作系统的提供的,系统调用接口,系统调用的接口在实现中以软件中断的方式提供。操作系统的内核层对于硬件层来说是,硬件接口层的使用者。硬件的接口定义决定了操作系统的内核,具体来说就是驱动程序如何操作硬件。如何与硬件进行通信,这种接口往往被叫做硬件规格,硬件生产厂家负责提供硬件规格,操作系统和驱动程序开发者,通过阅读,硬件规格文档所定义的各种的硬件编程接口标准来编写操作系统和驱动程序。

 

9.操作系统的一个功能是提供抽象接口,另外一个功能是管理硬件资源。读写磁盘的时候,cpu不使用。

10.硬盘的基本结构:硬盘的基本存储单位是扇区,一般是512个字节。一个硬盘分为多个盘片,每个盘片有两面。每个页面按照同心圆划分为多个磁道。每个磁道划分为多个扇区。

  文件系统保存了这些文件的存储结构,负责维护这些数据结构,保证磁盘中的扇区能够有效的组织和利用。linux下读取文件使用read的系统调用来实现,文件系统受到read请求之后,向硬盘驱动发送硬件指令,进行读取文件。

 

11.如何将计算机有限的物理内存,分配给过个进程使用。

12.一个进程又一个到多个线程组成,各个线程之间共享程序的内存空间(代码段,数据段,堆,文件,和信号)。线程的局部存储是操作系统单独为线程提供的空间。

 

二,编译和连接

1.软件运行后面的机理,和支撑软件运行的各种平台和工具。

2.程序的构建,分为I:预处理,编译,汇编,和链接。

3.头文件预编译之后的,后缀名是.i。

4.汇编:是将汇编代码转换为机器代码的指令。

5.编译一般分为:扫描,语法分析,语义分析,源代码优化,代码生成,和目标代码优化。

 

6.模块与模块之间有函数的调用关系,变量的相互使用。

7.连接过程中,主要包括:地址和空间的分配、符号决议、重定位。

8.最常见的库,就是运行时库,他是支持程序运行的,基本函数的集合。库其实是一组目标文件的集合,常用的方法编译成目标文件之后打包存放。

三、可执行文件的装载,和进程。

1.运行库是与平台相关的,因为它和操作系统结合的非常紧密 ,c语言的运行时库从某种程度上来讲是c语言的程序和不同操作系统之间的抽象出,它将不同操作系统的api封装成相同的函数来使用。

2.系统调用是应用程序(运行库也是应用程序的一部分)与操作系统内核之间的接口,它决定了应用程序如何与内核打交道,无论程序是直接进行系统调用还是通过运行库,最终还是会到系统调用这个层面上来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值