学习笔记:UNIX基础知识

这篇学习笔记详细介绍了UNIX操作系统的基础知识,包括UNIX的体系结构、登录过程、文件和目录管理、输入输出机制、程序与进程的运行以及错误处理和信号系统。文章阐述了shell的作用和不同类型的shell,如Bourne Shell、C Shell、Korn Shell和Bash,并探讨了文件系统结构、文件属性、路径表示以及进程和线程的概念。同时,还讲解了标准I/O和错误处理的方法,以及信号在进程间通信中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

因为之前学的不是很系统,现在打算重新开始系统的学并做好学习笔记。
所有操作系统都需要向它们运行的程序提供各种服务(如:执行新程序,打开文件,读文件,分配存储区,获得当前时间等。)

UNIX体系结构

严格意义上来说操作系统(内核)可以被定义为一种软件,其控制着计算机硬件资源提供程序运行环境。在广义上,操作系统包括内核和其他一些软件(实用程序,应用软件,shell,以及库函数等)给与计算机独有的特性并使计算机能够发挥作用。
这里写图片描述
从其体系结构图中可以看到:kernel(内核)相对较小,位于环境中心,其接口被称为system calls(系统调用),系统调用的接口可以为shell(特殊的应用程序),library routines(库函数)。应用程序可以使用shell,系统调用以及库函数。

登录

登录名在/etc/passwd文件中。口令文件中登录项由7个以冒号分隔的字段组成
(登录名:加密口令:数值用户ID:数值组ID:注释字段:其实目录:shell程序)
这里写图片描述
shell是一个命令行解释器,它读取用户输入,然后执行命令,用户通常用终端(交互式shell),有时则通过文件(称为shell脚本),向shell进行输入。系统从口令文件中登录项的最后一个字段中了解到应该为该用户执行哪个shell
Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。
  (1)Bourne Shell(sh)是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
  
(2)C Shell(csh)是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。
  
(3)Korn Shell(ksh)是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
  
(4)Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

文件和目录

UNIX文件系统是目录和文件组成的一个层次结构,目录的起点称为根(root——/)。
*目录*是一个包含许多目录项的*文件*,可以认为每个目录项都包含一个文件名与说明该文件系统的属性信息。文件属性是指文件类型,文件大小,文件所有者,文件权限以及文件最后修改时间等。

目录中各个名字称为文件名。不能出现在文件名中的字符只有斜线(/)和空操作符(null)两个。因为斜线(/)代表根文件,空操作符用来终止一个路径名。

路径表示从根文件路径开始的称为绝对路径,否则为相对路径。
登录时,工作目录设置为起始目录,起始目录从口令文件中相应用户的登录项中取得。

输入和输出

1.文件描述符是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符。在读写文件时可使用它。
2.每当运行一个新程序时,所有的shell都为其打开三个文件描述符:标准输入,标准输出,标准出错。
3.函数open,read,write,lseek,close提供了不用缓冲的I/O。这些函数都使用文件描述符。
4,标准I/O提供一种对不用缓冲I/O函数带缓冲的接口,使用标准I/O函数可以无需担心如何取得最佳的缓冲区大小,简化了对输入行的处理。

程序和进程

1.程序是存放在磁盘上处于某个目录中的一个可执行文件。(使用6个exec函数中的一个由内核将程序读入存储器并将其执行)
2.程序的执行实例被称为进程。(有些操作系统用任务表示正在被执行的程序)
进程ID是一个非负整数,用它来确保每个进程都有一个唯一的数字标识符。
3.有三个用于进程控制的主要函数:fork,exec,waitpid。
4.一个进程只有一个控制线程,同一时刻只执行一组机器指令。在一个进程内的所有线程共享同一地址单元,文件描述符,栈以及与进程想关的属性。要考虑避免不一致性——在各线程在访问共享数据时。
线程ID只在它所属进程内起作用。当在一个进程中对多个线程进行操纵时,用线程ID引用相应的线程。

出错处理

当UNIX函数出错时,常常返回一个负值,整型变量errno通常被设置为含有附加信息的一个值;某些函数并不返回负值而是用另一种约定。
使用errno有两条规则:1.若没出错,则其值不会被一个例程清除,仅当函数的返回值指明出错时才检验其值;2.任一函数都不会将errno值置为0.

信号

信号是通知进程已发生某种情况的一种技术。进程处理信号有三种选择:1.忽略该信号,2.按系统默认方式处理,3.捕捉该信号(信号发生时调用某一自己写的函数)。
限制:向一个进程发送信号时,我们必须是该进程的所有者或是超级用户。

第一章UNIX操作系统概述 1983年AT&T发布UNIX System V,系统功能已经趋于稳定和完善,现在最后版本为System V Release 4 代表性UNIX版本: 1.System V Release 4 (SVRV) 小型机上、大型机上使用。 2.加州大学伯克利分校的BSD(Berkeley)版本,主要用于工程设计和科学计算;主要在小型 机上、大型机上使用。 3.Microsoft和SCO公司开发的SCO XENIX SCO UNIX和OpenServer等,主要应用在基于 Intel x86体系结构的系统上。 4.开放源代码的Linux,UNIX体系结构加MS Windows形式的图形用户界面,主要应用 在基于Intel x86体系结构的系统上。 Unix系统特征: 1.可移植性强--Unix操作系统大量代码为C语言编写,C语言具有跨平台的特性。 2.多用户、多任务的分时操作系统--人机间实时交互数据;多个用户可同时使用一台主机; 每个用户可同时执行多个任务。 3.软件复用--每个程序模块完成单一的功能;程序模块可按需任意组合;较高的系统和应 用开发效率。 4.设备独立的输入/输出操作--打印机、终端视为文件;输入/输出操作设备独立。 5.界面方便高效--内部:系统调用丰富高效;外部:shell 命令灵活方便可编程;应用: GUI清晰直观功能强大。 6.安全机制完善--口令、权限、加密等措施完善;抗病毒结构、误操作的局限和自动恢复 功能。 7.多国语言支持--支持全世界现有的几十种主要语言。 8.网络和资源共享--内部:多进程结构易于资源共享;外部:支持多种网络协议。 9.系统工具和系统服务--100 多个系统工具(即命令),完成各种功能;系统服务用于系统 管理和维护。 Unix操作系统的组成:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值