Unix环境高级编程第一章 笔记

发布 2021-05-12 03:56:28 阅读 5416

unix环境高级编程

第一章:课程内容介绍,讲解基本概念。

文件:数据或设备的一种逻辑组织。

linux下7种文件类型:

1、普通文件(regular file)==文本文件、可执行文件、html文件等,file命令查看文件的详细信息。

2、目录文件(directory)

3、链接文件(link)

4、块设备文件(block special,一次只能传输固定字节个字符,如硬盘sda)

5、字符设备文件(character special,一次可以传输不同字节个字符,如内存虚拟盘ram0)

6、套接字文件(socket)

7、管道文件(fifo)

文件系统:文件间关系管理的一种逻辑组织,操作系统中所有的文件通过某种有序的排列方式组成在一起形成一个系统。

boot:与启动相关的文件。

bin:放置一部分可执行程序。

media:放置可移动设备文件夹。

home:用户家目录。

dev:device设备文件。

lib:一部分库文件。

opt: 放置用户应用软件 ==windows下c盘中的program files

root:超级用户的家目录。

tmp:存放临时文件。

usr:存放用户文件(用户头文件,库文件,可执行程序等)

什么是命令?命令即将要执行的一条指令。

什么是程序?程序即由多条命令经过有序的组合在一起的文本文件。

什么是进程?执行编译源程序后生成的可执行程序需要占用系统资源(如:打印机,内存,硬盘,cpu,时间等各个程序运行起来都不一样),进程即程序从开始运行到终止运行的运行过程,在这一过程中将会占用资源,操作系统是以进程为单位给每一个进程分配资源的,所以又有人说“进程是资源分配的最小单位”。

什么是线程?进程里很多任务要同时进行怎么办?用线程!

一个进程可以有多个线程,就好像一条赛车道可以同时进行多辆赛车的比赛一样,宏观上看,多个线程在同一进程中同时运行,不相上下,谁先运行取决于操作系统的调度算法。“线程是任务分配的最小单位”。

为什么要学习高级编程?从操作系统的启动讲起。

一个操作系统是如何启动起来的?

bios:基本输入输出系统,固化在pc机上的一小块芯片中的程序,在pc机上才有这块芯片,在手机、arm板等嵌入式设备上没有这个芯片,需要手动烧入bootloader程序。在一个基于arm7tdmi core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的bootloader程序。

如果是pc机,首先执行的是bios芯片中固化的程序检测硬件设备相关信息并按bios中设置的启动顺序检测硬件设备(硬盘、软盘、u盘、光驱等)中bootloader相关信息启动设备上安装的引导程序lilo或grub开始启动选择器,进行内核的引导。

如果是arm板,由于arm板上没有bios芯片,只能从自己的rom开始运行,所以bootloader程序需要事先烧写在arm板的rom中,并没有像pc机一样成为固化芯片程序。

bootloader:一小段用于引导操作系统的启动**,往往是用汇编语言编写的,旨在快速高效地初始化基本硬件设备来引导装载操作系统,bootloader种类比较多,常见的x86上的有lilo,grub,arm架构上比较有名的是u-boot,vivi. 还有其他的redboot / etherboot等。

bootloader做什么事?

1)把内核镜像压缩包装载到内存中来。

2)把控制权交给0号进程。

内核级进程,即占用内存高地址空间的进程:0号进程。

1)检测和挂载硬件设备并管理文件系统。

2)启动1号进程。

3)把控制权交给1号进程。

第一个用户级进程,即占用内存低地址空间的进程:1号进程。

1)初始化终端输入输出设备/sbin/getty

2)执行/etc/脚本启动系统服务,根据脚本中的命令配置环境变量,配置网络,启用swap,执行其他系统命令初始化所必须的命令等。

3)管理孤儿进程。

操作系统也要用内存,用户进程也要用内存去完成相应的工作,所以内存空间不是全部都能给用户进程用的。

内核里面的数据用户是看不到的,是操作系统的数据,用户如果要去访问内核的内存空间:系统调用(内核提供给你的接口)==访问和修改的是内核内存空间的数据。

系统调用的表现形式:c语言函数。

内核态:如果我们操作的数据是内核空间中的数据,我们就说我们所处的状态是内核态。

用户态:如果我们操作的数据是用户空间中的数据,我们就说我们所处的状态是用户态。

目标:学会用系统调用去操纵内核中的数据。

用shell、库、系统接口目的都是用来开发应用程序。

理解操作系统中进程、线程的概念和运用。

printf() file==>linux系统调用write()=写文件。

unix标准。

iso c international organization of standardization ==定义了c程序设计语言的语法和语义,还定义了c标准库。

ieee posix portable(可移植) operating system interface(接口) of unix ==操作系统至少要提供的系统调用。

single unix specification posix的超集,定义了一些附加接口。

fips 其他标准。

提示:由于前面课程知识不得不有涉及到后面章节的知识的可能,知识结构是一个环,该课程所有知识需要反复练习,理解和巩固才能达到更深层次理解的效果。

高级会计第一章

课程简介。高级会计学 课程是在 中级财务会计 课程的基础上,对一些特殊行业 特殊业务 特殊呈报的会计问题进行研究的一门会计学专业必修课程。高级会计所涉及的内容,往往属于国际会计领域前沿性问题或国内经济生活中企业正在面临的新问题。本课程主要分别就非货币性资产交换 债务重组 外币折算 租赁 所得税 企业...

高级财务会计第一章总结

单项交易观和两项交易观对比 例1 1 1.递延法 汇总确认汇兑损益。只有在结算日才能将汇率变动所形成的汇兑差额应 财务费用 汇兑差额 账户,期间任何时点上所形成的汇兑差额均应暂时计入 递延汇兑差额 账户中转。2.当期确认法 分段确认汇兑损益。为了反映汇率变动跨越两个会计期间的实际过程,应在每期期末按...

第一章作业

1 设计操作系统的主要目标是什么?1 方便性。使计算机更易于用户使用。2 有效性。以有效的方式管理计算机系统的资源,合理地组织计算机的工作流程,以防止。对计算机资源的不当或错误使用。这是操作系统可用的关键因素。3 可扩展性。为用户的开发搭建一个平台,允许修改并引进新的功能。2 操作系统的基本功能是什...