01.UNIX基础知识
1、UNIX体系结构
什么叫做内核?
内核是一种软件,它控制计算机硬件资源,并提供程序的运行环境。
什么叫操作系统?
在广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,如可以向用户提供服务之类的。
什么是系统调用?
内核的接口被称为系统调用。公用函数库构建在系统调用接口上,应用软件既可使用公用函数库,也可使用系统调用。
2、文件和目录
创建新目录的时候会自动创建两个文件名:.和..。
在根目录下,这两个文件是同一个文件。
目录是一个包含许多目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名。(参考《鸟哥的私房菜》)
UNIX文件系统的大多数实现并不在目录项中存放属性,这是因为当一个文件具有多个硬链接时,很难保持多个属性副本之间的同步。
以斜线开头的路径名称为【绝对路径】,否则则为【相对路径】。
根文件的名字/是一个特殊的绝对路径名,它不含文件名。
stdin、stdout和stderr都属于文件,所以可以使用fgets(buf,MAXLINE,stdin);从标准输入中读入一行。
3、输入和输出
文件描述符是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。
按惯例,每当运行一个程序时,所有的shell都为其打开三个文件描述符:标准输入、标准输出以及标准出错。一般情况,这三个描述符都链向终端,但shell也提供一种方法,使其中任何一个或所有三个描述符都能重新定向到某个文件,例如:
ls > file.list
即标准输出到file.list文件,而非终端。
函数open、read、write、lseek以及close提供了不用缓冲的I/O,这些函数都使用了文件描述符。
例子:
#define BUFFSIZE 4096 int main()
{
int n;
char buf[BUFFSIZE]; while((n = read(STDIN_FILENO,buf,BUFFSIZE)) > 0) {
if(write(STDOUT_FILENO,buf,n) != n) {
printf("write error!");
exit(1);
} if(n < 0) {
printf("read error!");
exit(1);
}
} exit(0);
}
或者
相对于不带缓冲的I/O函数而言,标准I/O函数提供了带缓冲的接口。
【原文:The standard I/O functions provide a buffered interface to the unbuffered I/O functions.】
int main()
{
char c; while((c = getc(stdin)) != EOF) {
if(putc(c,stdout) == EOF) {
printf("output error!");
exit(1);
} if(ferror(stdin)) {
printf("input error!");
exit(1);
}
} exit(0);
}
在运行终端上:
./test < infile > outfile
此时STDIN_FILENO描述符表示infile,STDOUT_FILENO描述符表示outfile。
4、程序和进程
程序是存放在磁盘上,处于某个目录中的一个可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。
在一个进程内的所有县城共享同一个地址空间、文件描述符、栈以及进程相关的属性。因为它们能访问同一存储区,所以各县城在访问共享数据时需要采取同步措施以避免不一致性。
与进程相同,线程也用ID标识。但是,线程ID只在它所属进程内起作用。一个进程中的线程ID在另一个进程中并无意义。
5、用户标识
用户ID为0的用户为根或超级用户。
6、信号
信号是通知进程已发生某种情况的一种技术。
7、时间值
进程时间。也称为CPU时间,用以度量进程使用的中央处理机资源。
当度量一个进程的执行时间时,UNIX系统使用三个进程时间值:
a、时钟时间。
b、用户CPU时间。
c、系统CPU时间。
时钟时间是进程运行的时间总量。
用户CPU时间是执行用户指令所用的时间。
系统CPU时间是为该进程执行内核程序所经历的时间(系统调用所耗时间)。例如read或write,在内核内执行所花费的时间就计入该进程的系统CPU时间。
用户CPU时间和系统CPU时间之和常被称为CPU时间。
8、系统调用和库函数
系统调用和库函数都以C函数的形式出现。必要时我们可以替换库函数,而通常却不能替换系统调用。
系统调用和库函数之间的一个差别是:系统调用通常提供一种最小接口,而库函数通常提供比较复杂的功能。
01.UNIX基础知识的更多相关文章
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识
1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...
- 【java基础】01 计算机基础知识
一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...
- Spring笔记01(基础知识)
1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...
- 《UNIX环境高级编程》笔记——1.UNIX基础知识
这一章节侧重一些基本概念和书中用到的一些名词. 一.引言 所有的操作都提供服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储区以及获得当前时间等. 二.UNIX体系结构 其实linux常见 ...
- 第一章:UNIX基础知识
本章内容主要是为了学习UNIX的基本知识和一些最基本的系统函数. 学习的关键就是跟随者书本敲代码.本节遇到的第一个问题就死本书的apue.h这个文件:一开始没有注意这个文件,盲目的去百度,一番百度之后 ...
- UNIX基础知识之程序和进程
一.程序 程序(program)是存放在磁盘上.处于某个目录中的一个可执行文件.使用6个exec函数中的一个由内核将程序读入存储器,并使其执行. 二.进程和进程ID 程序的执行实例被称为进程(proc ...
- apue- chapter 1 UNIX基础知识
1.C++实现ls命令 #include<dirent.h> #include<stdlib.h> #include<iostream> #include &quo ...
- UNIX环境高级编程 第1章 UNIX基础知识
所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程 ...
随机推荐
- Nginx笔记总结十八:nginx统计响应的http状态码信息(ngx-http-status-code-counter)
编译:./configure --prefix=/usr/local/nginx --add-module=../ngx_http_status_code_counter-master make &a ...
- Luogu_2434_[SDOI2005]区间
题目描述 现给定n个闭区间[ai, bi],1<=i<=n.这些区间的并可以表示为一些不相交的闭区间的并.你的任务就是在这些表示方式中找出包含最少区间的方案.你的输出应该按照区间的升序排列 ...
- js 四舍五入实现
js Number.prototype.toFixed 进行的舍入的算法没研究明白,应该不是四舍六入五成双,当然也不是四舍五入 下面是chrome与excel的对比 修改完之后的结果 对于“问题数据” ...
- 探索Kinect的更多可能——亲历第十九届机器人世界杯RoboCup
作者:微软亚洲研究院资深项目经理 吴国斌 2015年7月19日,第十九届RoboCup机器人世界杯足球赛,在中国合肥隆重开幕.来自全球七十六个国家和地区的一百余支代表队参加了决赛,他们优秀的作品给观众 ...
- <pre>标签的使用
做做笔记.碰见了一个网站,显示代码的时候自带语法高亮,这很新鲜.它的代码被pre标签包裹,原本以为pre标签下的所有的内容会以文本原来的样式输出,特意查了查发现它依然支持html标签. 先来个菜鸟教程 ...
- Louis的「每周语文」
说明:此专栏为Louis收录的经典语录及书影音标记,每周一更新. 成长的本质是变得复杂.当你的主观世界遇到客观世界,之间的那条沟,你掉进去,叫挫折,爬出来,叫成长. -- 语出罗振宇在奇葩说第四季的结 ...
- Mybatis调用存储过程报错
Mybatis调用存储过程 贴码 123456 Error querying database. Cause: java.sql.SQLException: User does not have ac ...
- 【i3】manjaro配置
介绍 这是一期关于manjaro的安装到开发环境配置i3wm的教程.我即将在manjaro_gnome里面演示 主要的软件或者工具 i3wm tmux nvim polybar compton ran ...
- 简单的员工管理系统(Mysql+jdbc+Servlet+JSP)
员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用mysql+jdbc+Struts2+bootstrap做成了一个ATM系统(主要有对数据的增删改查操作), ...
- Git 程序员篇
关于 Git Git 背后的故事 伟大的作品总是诞生于伟大的时代,正如 Git 同样诞生于一个英雄辈出.极富纷争的年代. 2005 年,Linux 内核开发社区正面临严峻的挑战:他们不能继续使用 Bi ...