UNIX学习
UNIX基础知识
UNIX体系结构
从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kernel)
内核的接口被称为系统调用
公用函数库构建在系统调用接口之上,应用程序既可使用公用函数库,也可使用系统调用。
shell 是一个特殊的应用程序,为运行其他应用程序提供了一个接口。
登录
登录名
口令文件(/etc/passwd)中的登录项由7个以冒号分隔的字段组成,依次是:登录名、加密口令、数字用户ID(205)、数字组ID(105)、注释字段、起始目录(/home/sar)以及shell程序(/bin/ksh)。
shell
UNIX系统中常见的shell
名称 | 路径 | FreeBSD 8.0 | Linux 3.2.0 | Mac OS X 10.6.8 | Solaris 10 |
---|---|---|---|---|---|
Bourne shell | /bin/sh | \ | \ | bash的副本 | \ |
Bourne-again shell | /bin/bash | 可选的 | \ | \ | \ |
C shell | /bin/csh | 链接至tcsh | 可选的 | 链接至tcsh | \ |
Korn shell | /bin/ksh | 可选的 | 可选的 | \ | \ |
TENEX C shell | /bin/tcsh | \ | 可选的 | \ | \ |
系统从口令文件中相应用户登录项的最后一个字段中了解到应该为该登录用户执行哪一个shell。
输入和输出
文件描述符
file descriptor通常是一个小的非负整数,当内核打开一个现有文件或创建一个新文件时,它都返回一个文件描述符。内核用以标识一个特定进程正在访问的文件。
标准输入、标准输出、标准错误
运行一个新程序时,shell会为其打开3个文件描述符(standard input、standard output、standard error),默认都链接向终端。
ls > file.list
执行ls命令,将其标准输出重新定向到名为file.list的文件。
不带缓冲的I/O
open、read、write、sleek以及close提供了不带缓冲的I/O,都使用文件描述符
printf是常见的标准I/O函数,在调用printf的程序中,总是包含<stdio.h>。
程序和进程
程序
程序(program)是一个可执行程序,内核使用exec函数,将程序读入内存并执行。
进程和进程ID
程序的执行实例称为进程(process)某些操作系统用任务(task)表示正在被执行的程序。
进程ID,每个进程唯一的数字标识,非负整数。
进程控制
- fork 创建一个新进程
- exec
- waited
线程与线程ID
一个进程内有一个或多个线程(thread)
出错处理
当UNIX系统函数出错时,通常会返回一个负值。
但有些函数,例如大多数返回指向对象指针的函数在出错时会返回一个NULL指针。
时间值
UNIX系统使用过两种不同的时间值
- 日历时间,1970年1月1日起,经历的秒数所得。系统基本数据类型time_t用与保存这种值。
- 进程时间,也被称为CPU时间,用来度量进程使用的中央处理器资源。类型clock_t来保存。
当度量一个进程的执行时间时,UNIX系统为一个进程维护了3个进程时间值:
- 时钟时间–在系统中没有其他活动时进行度量。
- 用户CPU时间–执行用户指令所用的时间量。
- 系统CPU时间–为改进程执行内核程序所经历的时间。如read或write。
用户CPU时间和系统CPU时间之和被称为CPU时间。
- 标题: UNIX学习
- 作者: DansRoh
- 创建于 : 2023-12-20 00:00:00
- 更新于 : 2024-06-24 17:17:11
- 链接: https://blog.shinri.me/2023/12/20/07_UNIX学习/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。