1,内核是操作系统的一部分(还有一些应用软件),可以看成是个软件,内核的接口叫系统调用,应用程序可以使用公用函数库或系统调用。
2,、登录与shell
shell原来有这么多种
/bin/sh 是steven bourne在贝尔实验室开发的Bourne shell,并得到广范的应用。<Bourne shell>
/bin/ksh 是 Bourne shell(/bin/sh)的后继者,它与Bourne shell向上兼容,并具有作业控制、命令行编辑等c shell 具有的东西<Korn shell >
/bin/csh 是Bill Joy 开发的,叫做C shell,控制流类似于c语音,支持/bin/sh没有的一些特色功能,作业控制、历史机制、命令编辑等。<C shell>
/bin/tcsh 是C shell的加强版。在C shell上增加了很多的特性,常被用来替换C shell。
/bin/bash 是Bourne-again shell 是GNU shell,所有的linux系统都提供这个。遵循POSIX标准,保留了Bourne shell的兼容性,支持C shell 和Korn shell两者的特色功能。《最强王者》
用户输入有时来自于终端(交互的shell),有时来自于文件(shell脚本)
登陆:登陆名+密码(/etc/passwd)
name:加密口令:数字组ID:组ID:注释字段:起始目录:以及shell程序
3、一种文件的复制:
#define BUFSIZE 128
while(( n=read(STDIN_FILENO,buf,BUFSIZE) )>0)
{
if(write(STDOUT_FILENO,buf,n)!= n)
{
perror("write:");
}
}
编译后命令行输入:./a.out < infile >ofile
:infile作为输入,拷贝到ofile中
4、出错处理:
unix函数出错时,通常会返回一个负值,errno通常被设置为具有特定的信息的值。
对于errno应该注意两条规则:
如果没有出错,其值不会被例程清除,仅当函数出错,才检验其值。
任何函数函数都不会讲errno设置为o,其定义的<errno.h>中定义的所以常量都不为0;
c语言定义的函数:打印出错信息
char *strerror(int errno);
void perror(const char *msg);
出错恢复:致命性错误(无法恢复,最多打印一条出错信息)和非致命性错误(暂时性的,如资源短缺)
5、用户标识
用户ID:通常每个用户有一个唯一的ID。口令文件 (user ID)
组ID:一般来说口令文件中有多个登陆项具有相同的组ID。允许同组成员共享资源。/etc/group
ID 都是一个数值,但为了用户方便,所以口令文件中包含了登陆名和用户ID之间的映射关系。
附属组ID:一个用户可以是多个组中。
6、时间值
日历时间:1970年开始的。。。(2038问题)【time_t 保持】
进程时间:cpu时间,以时钟滴答计算,度量进程使用的中央处理器资源。【clock_t 保存】
度量进程的执行时间:系统维护了3个进程时间值
时钟时间:墙上时间,是所以进程时间运行的总和
用户CPU时间:执行用户指令所用的时间
系统cpu时间:执行内核的调用时间。