【UNIX环境高级编程】UNIX基础知识
【UNIX环境高级编程】UNIX基础知识
1.UNIX体系结构
从严格意义上,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境,我们称这种软件为内核。
内核的接口称为系统调用。公用函数库构建在系统调用接口之上,应用软件既可使用公用数据库,也可使用系统调用。shell是一种特殊的应用程序,它为运行其他应用程序提供一个接口。
广义上,操作系统包括内核和一些其他软件。这些软件包括系统实用程序、应用软件、shell以及公用函数库。
2.shell
shell是一个命令行解释器,它读取用户输入,然后执行命令。用户通过用终端(交互式shell),有时通过文件(称为shell脚本,shell script)向shell进行输入。
3.文件和目录
3.1文件系统
UNIX文件系统是目录和文件组成的一个层次结构,目录的起点称为根,其名字是一个字符\。目录是一个包含许多目录项的文件,在逻辑上,认为每个目录项都包含一个文件名,同时还包含说明文件属性的信息。
3.2 文件名
目录中的各个名字称为文件名。
创建新目录时回自动创建两个文件名:.(点)和..(点-点) 点指当前目录,点-点指父目录
3.3 路径名
一个或多个以斜线分隔的文件名序列构成路径名
绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\cmd.exe
3.4 工作目录
每个进程都有一个工作目录,有时称其为当前工作目录。所有相对路径名都从工作目录开始。进程可以用chdir函数更改工作目录。
4.程序和进程
4.1 程序
程序是存放在磁盘上,处于某个目录中的一个可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。
4.2 进程和进程ID
程序的执行实例称为进程,某些操作系统用任务表示正被执行的程序。UNIX系统确保每个进程都有一个唯一的数字标识符,称为进程ID。
4.3 进程控制
进程控制的主要函数:
fork、exec和waitpid
4.4 线程和线程ID
一个进程只有一个控制线程,同一时刻只执行一组机器指令。对于某些问题,不同部分使用一个控制线程,可使问题简化。
在一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性。因为他们能访问同一存储区,所有各线程在访问共享数据时需要采取同步措施以避免不一致性。
每个线程都有线程ID,它只在所属进程内作用
5.出错处理
当UNIX函数出错时,常返回一个负值,整型变量errno通常被设置为含有附加信息的一个值。
c标准定义了两个函数打印出错信息。
#include<string.h>
char *strerror(int errnum);//返回值:指向信息字符串的指针
char *strerror(int errnum);//返回值:指向信息字符串的指针
此函数将errnum(它通常就是errno值)映射为一个出错信息字符串,并返回此字符串的指针
perror函数基于errno的当前值,在标准出错上产生一个出错信息,然后返回。
#include<stdio.h>
void perror(const char *msg);
void perror(const char *msg);
首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值得出错信息,最后是一个换行符
6.信号
信号是通知进程已发生某些情况得一种技术。
进程如何处理信号三种选择:
忽略该信号,有些信号表示硬件异常
按系统默认方式处理,对于除以0得情况,系统默认是终止进程
提供一个函数pause,信号发生时则调用该函数捕捉信号。
产生信号方式:
中断键(Delete或Ctrl+c)和退出键(Ctrl+\)
调用kill的函数
7.时间值
UNIX系统一直使用两种不同时间值:
(1)日历时间,国际标准时间,系统基本数据类型time_t用于保存这种时间值
(2)进程时间,也称cpu时间,用以度量使用的中央处理机资源。系统基本数据类型clock_t用于保存这种时间值。
UNIX系统使用的三个进程时间值:
时钟时间,又称墙上时钟时间,他是进程运行的时间总量,其值与系统中同时运行的进程数有关。
用户CPU时间,执行用户指令所用的时间
系统CPU时间,该进程执行内核程序所经历的时间。每当一个进程执行一个系统服务,如read或write,则在内核内执行该服务所花费的时间就计入该进程的系统CPU时间
8.系统调用和库函数
系统调用:
所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。各种版本的UNIX实现都提供定义明确、数量有限、可直接进入内核的入口点,这些入口点称为系统调用。
系统调用和库函数的差别:系统调用通常提供一种最小接口,而库函数通常提供比较复杂的功能。从sbrk系统调用和malloc库函数之间的差别就能看出。
进程控制系统调用(fork、exec和wait)通常由用户应用程序直接调用。
【UNIX环境高级编程】UNIX基础知识相关推荐
- 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)
文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...
- UNIX环境高级编程 - UNIX基础知识
所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程 ...
- 《UNIX 环境高级编程》学习笔记——UNIX 基础知识
UNIX环境高级编程--UNIX 基础知识 引言 UNIX 体系结构 登录 文件和目录 输入和输出 程序和进程 出错处理 用户标识 信号 时间值 系统调用和库函数 引言 所有操作系统都为它们所允许的程 ...
- unix环境高级编程基础知识之第二篇(3)
看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...
- unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏
这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...
- 《Unix环境高级编程》学习笔记:从点到面
以前在课堂上学习过<Unix初级教程(第四版)>,对于Unix有了一点了解.由于以后使用的需要,要对它进行比较深入的学习,为此需要阅读不少的书籍,这本<Unix环境高级编程>便 ...
- [阅读体会] UNIX环境高级编程
文章目录 写在开始阅读前 (我会的知识点,在体会里是不提的,并不是书中没有,这里着重于记录我之前不会的,但读过书之后学会的.) 第一章 第二章 2.1 引言 2.2 UNIX标准化 2.2.1 ISO ...
- Unix环境高级编程 笔记
Unix环境高级编程(第二版)学习笔记 这是一次较长时间的整理,然而跳跃了一些章节和很多知识点,仍然是很不完善很不全面的. 前言 操作系统某些问题 严格意义上,可将操作系统定义为一种软件,它控制计算机 ...
- 《UNIX环境高级编程(第3版)》
<UNIX环境高级编程(第3版)> 基本信息 原书名:Advanced Programming in the UNIX Environment (3rd Edition) (Addison ...
- unix环境高级编程(上)-文件篇
目录 前言 unix基础知识 unix标准化和实现 unix提供的文件IO 文件和目录 标准IO 系统数据文件 前言 笔者将<unix环境高级编程>主要内容总结为三篇:文件篇,进程篇,高级 ...
最新文章
- 如何和女生聊天不进入友谊区
- 数据仓库/集市 星形/雪花形 事实/维度表
- [JMX一步步来] 7、用JDK5.0的JConsole来连接MBean
- 优秀学生专栏——孙珩发
- javaweb开发的准备工作——配置篇
- 计算机科学与技术专业实习招聘,中科院研究生院招聘GIS或计算机专业实习生
- 深入php面向对象和模式
- 《C和指针》——字符串操作补、字符串内存操作
- 基于用户的协同过滤算法
- SQL Server数据挖掘–如何将数据转化为有价值的信息
- 第九届河南理工大学算法程序设计大赛 正式赛(部分题解)
- 创设Excel服务失败
- 投票系统C语言程序,C语言课程投票程序系统.doc
- 目标检测经典论文——YOLOv1论文翻译(纯中文版):YOLO:统一的实时目标检测
- 基于特征提取的迁移学习
- 【Python界面设计】Tkinter的Listbox控件
- python可视化库matplotlib_Python可视化库matplotlib(基础整理)
- Swift语法学习--数组
- 《未来简史》一、主导世界力量的形成与崩塌
- 每次都想呼喊你的名字
热门文章
- 收藏夹吃灰系列(五):解决Win10插入U盘不显示磁盘可用容量且打不开卡死问题 | 超级详细,建议收藏
- python暴力破解
- mapxtreme java_MapXtreme Java
- 大厂面经----接近30场面试分享
- 【VMware vSAN 7.0】5.4.2 创建 vSAN 集群—我们有软硬件解决方案
- 使用requests访问必应在线翻译
- WEB前端使用SheetJS读写excel文件
- Java 并发编程实战 -- 常见概念
- 廖雪峰python3复习总结——day2-1
- 汇川PLC软件下载及安装