linux系统编程1



linux系统程序设计(理论课10天,项目7天)
学习方法:1、交流 2、练习 3、不求甚解


C库封装了系统调用函数
第一章
一、基本构成
存储器地址寄存器MAR:
确定下一次读写的存储器地址
存储器缓冲寄存器MBR:
包含要写入存储器的数据或从存储器中读取的数据
输入输出地址寄存器i/o AR:
确定一个特定的输入输出设备
输入输出缓冲寄存器I/O BR:
用于在输入输出模块和处理器之间交换数据
程序计数器PC:
将取指令的地址
指令寄存器IR:
最近取的指令内容
程序状态字PSW:
包含条件码和状态信息
指令生命周期:
取指令->放置在指令寄存器->处理器解释指令并执行操作->PC保存下一次取指的地址


多级存储器的层次结构成功的关键:
处理器访问存储器的频率递减


操作系统提供的服务:
程序开发、程序运行、io设备访问、文件访问、系统访问、错误检测、审计


执行上下文(又叫进程状态):
包括各种处理器寄存器的内容,如PC和数据寄存器,进程优先级以及进程是否等待IO事件


进程:由上下文,数据,程序组成。进程状态包含在它的上下文中




二、linux可加载模块的两个重要特征:
1、动态链接:当内核已经在内存中正在运行时,内核模块可以被加载和链接到内核
模块也可以在任何时刻被断开链接,从内存中移出insmod/rmmod
2、可堆栈模块:模块按层次排列,当被高层的客户模块访问时它们作为库,当被底
层模块访问时,它们作为客户


三、内核组件
信号:
内核通过信号调用进程。信号通知进程某些错误,比如被0除错误


系统调用:
进程通过系统调用来请求系统服务比如open,Msgrcv。分为六类:文件系统、进程、调度、进程通信、套接字


进程和调度器:
创建、管理、调度进程


虚拟内存:
为进程分配和管理虚拟内存


文件系统:
为文件目录和其他文件相关对象提供全局的层次化的命名空间,并提供文件系统函数
网络协议:
为用户的TCPIP协议套件提供套接字接口
字符设备驱动:
管理向内核一次发送或接收一个字节数据的设备,比如终端,调制解调器,打印机
块设备驱动:
管理以块为单位向内核发送和接收数据的设备,比如磁盘,CD,rom
网络设备驱动:
对网卡和通信端口提供管理,负责连接到网桥或路由器等网络设备
陷阱和错误:
处理cpu产生的陷阱和错误,比如内存错误
物理内存:
管理实际内存的内存页池和为虚拟内存分配内存页
中断:
处理来自外设的中断


第二章 文件
int open (const char*pathname,int flags)
int open(const char*pathname,int flags,made_t mode)
返回值:文件描述符。错误则返回-1
ssize_t read(int fd,void*buf,size_t count);//从文件描述符fd所引用的文件读取count字节到buf内存地址中。失败返回-1


程序访问文件,通过文件路径名
进程打开文件的时候,将获得一个非负整数标识即文件描述符,通过它对文件进行IO处理
标准输入stdin 0
标准输出stdout 1
标准错误stderr 2
这三个不需要打开,系统已经自动打开 


目录:
将文件的名称和和它的索引节点结合在一起的一张表opendir()
索引节点:
包含文件的访问权限,大小,修改时间,文件所有者stat()
文件数据:
存储位置由索引节点指定,open(),read()来访问


注意:在使用终端或者通过文件交换信息时采用流的IO方法,使用网络或管道通信时,采用系统调用的IO方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值