UC基础-001(计算机系统分层+环境变量+错误处理+静态库与的制作和使用)

(一)计算机系统分层

操作系统是管理计算机硬件资源和软件资源的一款系统软件。简称OS。

对上:软件控制(用系统函数调用进行控制)。对下:硬件控制(用驱动进行控制)。

操作系统通过各类函数(系统调用接口)去让用户去控制软件,即去使用操作系统的功能。

sheel程序(壳):用户和内核之间交流的媒介。即:我们进行最基本的电脑操作时,这些操作都在sheel中包含着。sheel不等于终端窗口,但sheel运行在终端窗口上。不同的linux发行版本上所使用到的sheel程序可能不一样。

本Linux所使用的sheel程序是bash。(bash是sheel的一个版本)

硬件包括:CPU、GPU、内存、磁盘等等(计算机真正运作的东西)。

内核管理硬件。

应用通过调用系统函数去操控内核,进一步的操控硬件。

(二)环境变量

(1)环境变量是:①bach用一个叫做环境变量的特性去存储有关工作的环境信息。②进程可以通过环境变量去访问计算机的资源。

自我理解:环境变量就是说,你在运行一个程序时,这个程序的一些最基本操作的一个环境,在这个环境下你才能去准确的操控该程序。

(2)在终端下输入env命令,可以查看环境变量的列表。

通过echo $name可以查看某个环境变量的值。

(3)环境变量的添加:

在终端窗口中输入 键=值 形式的内容,回车(这样添加的环境变量属于私有的,可以通过“export 键”的命令去使其变成全局环境变量)。

注:在添加环境变量时,等号左右两侧不要添加空格。

(4)环境变量的类别:

bach分为:①通过env命令能查到的(全局环境变量)。②通过env命令查不到的(自定义的/私有的/局部的环境变量)。

通过env命令能查到的全局环境变量可以被bach的子进程所继承。

每当打开一个终端时,就会生成一个bash,关闭时该bash被释放。当再次重新打开bash时就会生成一个新的bash。所以如果通过“键=值”的方式在终端上添加一个环境变量时,该环境变量只会短暂存在,关闭重新打开终端后,该环境变量就消失了。

如果想要每次开启新的终端,之前添加的环境变量都可用,则需要对家目录下的bashrc文件进行修改(在bashrc文件中的最后一行添加一个PATH=$PATH:XXXXX)。

(5)环境变量表:

每次程序执行时,内核会通过一个字符指针数组去帮忙维护一个环境变量表(该数组的每个元素都是指针,去记录一个字符串的地址,该数组的最后一个元素指向的是空,一般用来判断指针数组的截止)。

当进程开始执行时,则内核创造一个这样的数组,当进程运行结束后,该数组就被释放了。

该指针数组的地址(首元素地址)保存在二级指针变量environ(全局的指针变量)中。该二级指针用来保存一级指针的地址。即**environ用来保存*char的地址。

*environ的值就是程序执行时所创建的环境变量(environ是环境变量表的首地址,*environ就是环境变量表中第一个数组的值),该环境变量和bash无太大区别,即他是bash的继承,包括了bash中的全局部分。

main函数的第三个参数就是environ(环境变量表的首地址)。

(三)错误处理

(1)获取错误变量的方法一:

通过errno去获取错误原因的标号。

(2)获取错误变量的方法二:

(3)获取错误变量的方法三:

(三)静态库的使用

(1)静态库(拓展名是.a)

①构建步骤

(2)动态库(拓展名是.so)

(3)动态库的动态加载

①将动态库载入内存

延迟加载,进一步的提升了内存的利用效率

Filename——想要调用的库的路径

Flag——加载库的方式

②从以获取的动态库中找到所要用的函数

Handle——动态库访问句柄

Symbol——要使用的动态库中的函数

返回的是handle库中的symbol函数的地址(要用函数指针去接这个地址)

③卸载已使用完的函数的内存:

④检查是否出问题,返回错误的原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值