文章目录
前言
了解
一、联机命令接口
用户命令分为两类:
- 联机命令接口:交互(命令界面,图形界面)
- 脱机命令接口:批处理、或作业控制
字符命令用户接口
字符方式联机用户接口又称为联机命令接口。是指用户通过命令语言实现对作业的控制,以及取得操作系统的服务。即用户在实现与机器的交互时,先在终端的键盘上键入所需的命令,由终端处理程序接收该命令,并在用户终端屏幕上以字符显示方式反馈用户 输入的命令信息、命令执行及执行结果信息。
图形化联机命令接口
GUI
联机命令的类型
通常,OS都向用户提供了几十条甚至上百条的联机命令。根据这些命令所完成功能的不同,可把它们分成以下几类:
1.系统访问类
- 在单用户微型机中,一般没有系统访问命令;
- 在多用户系统中,为了保证系统的安全性,都毫无例外地设置了系统访问命令,即注册命令login。
- 凡要在多用户系统的终端上上机的用户,都必须先在系统管理员处获得一合法的用户名和口令。
- 每当用户在接通其所用终端的电源后,便由系统直接调用并在屏幕上显示出以下的注册命令:
login: //提示用户键入自己的注册名
password: //提示用户键入自己的口令
2.目录操作类
(1) 建立子目录命令: mkdir, md / mkdir
(2) 显示目录命令: dir / ls
(3) 删除空子目录命令:rmdir, rd / rmdir, rm
(4) 显示目录结构命令:tree / tree
(5) 改变当前目录命令:chdir, cd / cd, pwd
3.文件操作类
(1) 显示文件命令:type / cat
(2) 拷贝文件命令:copy / cp
(3) 文件比较命令:comp / cmp
(4) 重新命名命令:ren, move / mv
(5) 删除文件命令:erase, del / rm
4.其他命令(I/O重定向、管道、过滤和批处理)
I/O重定向
管道
过滤
批处理
5.磁盘操作类
(1) 磁盘格式化命令format
(2) 复制整个软盘命令diskcopy
(3) 软盘比较命令diskcomp
(4) 备份命令backup
(5) 分区管理命令fdisk
6.通信类
7.命令解释程序
二、 Shell命令语言
在Unix/Linux系统中, Shell是命令语言、命令解释器(程序)及程序设计语言的统称。
(1) 命令解释器(Shell程序):对输入的命令解释执行。
(2) 程序设计语言:支持绝大多数在高级语言中能见到的程序元素,如函 数、变量、数组和程序控制结构。具有较强的编程能力。
(3) 拥有自己内建的Shell命令集。
Linux系统基本知识补充
比如:
ls # 列当前目录
ls / # 列根目录
ls -l / # 长格式列根目录
ls -lu / #长格式列根目录,不排序
date # 显示系统时间
date -u # 显示系统的Greenwich时间
可通过以下方式获得命令的简帮助
cmd --help
ls --help
简单命令
两大类:
系统提供类
用户自定义类
还可以分为:
内部命令
外部命令
简单命令的种类
- 进入和退出系统
(1)进入系统
当用户需要注册进入系统时,系统会自动调用login命令,让用户输入用户名和密码,验证无误后方可进入系统。过程为:
*** login:
Password:
(2)退出系统
当用户使用完毕系统后,要退出系统。方法有
logout
exit
^D - 目录操作命令
列目录:ls
目录创建:mkdir
改变目录:cd
显示当前目录:pwd
目录的移动与更名:mv
目录的删除:rm - 文件操作命令
文件显示与合并命令:cat
文件复制命令:cp
文件的更名与移动:mv
文件的删除:rm
确定文件的类型:file、stat
改变文件的存取方式:chmod - 系统询问类
时间查询命令:date
查询谁在系统中:who
查询我是谁:whoami
查询所有终端名:tty
查询进程树:pstree
查询主机名:hostname
查询系统信息:uname - 系统管理命令
关闭/重启系统命令
用户、组和密码管理
日期和时间管理
权限管理
设备管理
网络管理
系统管理
I/O重定向与管道命令
1. I/O重定向
UNIX/Linux/DOS/Windows的3 类标准I/O:
0 – stdin(标准输入)
1 – stdout(标准输出)
2 – stderr(标准错误)
均可重定向,使用符号如下:
< : 用于输入的重定向;
> : 用于输出重定向。若改道的文件不存在则创建之,若存在则将其冲空后,把标准输出的内容写指定文件。
>>:用于输出重定向。若改道的文件不存在则创建之,若存在则将文件指针指向该文件的尾部后,把标准输出的内容写指定文件,也就是追加致已存在文件的尾部。
2>&1:将标准错误重定向到标准输出。
2. 管道连接
I/O重定向的另一种形式是管道。具体做法是将前一条命令的输出信息作为下一个命令的输入信息,用符号“|”在两个相邻命令之间形成一条管道。
管道形式的一般格式为:
cmd1 | cmd2 | … | cmdn;
通信命令
1、信箱通信命令:mail
2、对话通信命令:write
3、通信控制命令:mesg
4、广播通信命令:wall
后台命令
命令的后台执行:
- Unix/Linux提供了命令后台执行机制,命令启动方法与前台正常基本一样,只是要在命令的最后,回车键之前加上“&”。
- 例如:ls -l /dev &
- 注意:
在程序后台执行时,不能进行交互。
若程序有未被重定向的输入,则被阻塞。
若有未重定向的输出,则以邮件形式发给用户
Linux C编程补充
Unix/Linux C编程简介
三、 联机命令接口的实现
- 为了实现人机交互,在系统中必须配置相应的软件来实现人机交互。这就是shell程序。
- 基本功能是:
接收并缓存用户输入
命令解释,并提交系统执行
最后,将结果返回给用户。
终端键盘处理程序
终端键盘处理程序应具有以下功能:
①接收用户从终端上打入的字符
②字符缓冲,用于暂存所接收的字符
③回送显示
④屏幕编辑
⑤特殊字符处理
四、 系统调用的概念和类型
系统调用的基本概念
- 系统调用是操作系统内事先编制好的,实现服务功能的子程序或过程,是OS提供给编程人员的接口,是用户程序获取系统服务的唯一途径。
- 编程人员利用系统调用,在源程序一级动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作以及控制程序的执行速度等。
- 系统调用像一个透明箱子那样,对用户屏蔽了操作系统的具体动细节而只提供有关的功能。
- 命令控制界面或库函数也都是在系统调用的基础上开发而成的。
系统调用的执行过程
系统调用的类型
1. 进程控制类
(1) 创建和终止进程
(2) 获得和设置进程属性
(3) 等待某事件出现
2. 文件操纵类
(1) 创建和删除文件
(2) 打开和关闭文件
(3) 读和写文件
(4) 文件的指针移动
(5) 文件的属性操作
3. 进程通信类
进程间通信也叫IPC(Inter-process communication)。常用的机制有:
消息传递机制
共享内存机制
信号机制
信箱机制
管道机制
4.设备管理类
5.存储管理类
6.线程管理类
POSIX标准
- 不同OS有差别。
- POSIX标准。
POSIX定义了标准应用程序接口(API),用于保证编制的应用程序可以在源代码一级上多种操作系统上移植运行。只有符合这一标准的应用程序,才有可能完全兼容多种OS,在多种操作系统下能够编译后运行。 - 可以在POSIX基础上构建自己的库
五、 UNIX系统调用
1. 进程控制
(1) 创建进程(fork)
(2) 终止进程(exit)
(3) 执行一个程序(exec)
(4) 等待子进程结束(wait)
(5) 获得进程ID(getpid/getppid/getpgid)
(6) 获得用户/组ID(getuid,geteuid/getgid,getegid)
(7) 进程暂停(pause)。
2. 文件操纵
- 创建与删除(creat, unlink)
- 打开与关闭(open, close)
- 读/写文件(read/write)
- 连接与去连接(link, unlink)
- 指针移动(lseek)
3. 进程间通信
- UNIX提供有进程间通讯的软件包,简称为IPC,它主要包括:
(1) 消息机制。
(2) 共享存储器机制。
(3) 信号量机制。 - 在每种机制中,都提供有相应的系统调用供用户程序进行进程间的同步与通讯。
- 在UNIX/Linux系统中学习或自学
4. 信息维护
(1) 设置和获得系统时间(stime)。
命令有date
(2) 获得进程和子进程CPU使用计时(times)。
命令有:time,times
(3) 设置文件访问和修改时间(utime)。
命令有touch
(4) 获得当前UNIX系统的名称(uname)。
命令有uname
六、 系统调用的实现
- 对于系统调用,要控制CPU由用户态切换到系统态,这要借助中断或陷入机制来实现。
- 在该机制中包括中断和陷入机构及中断和陷入处理程序两部分。
1)什么是中断和陷入 - 中断是指CPU对系统发生某事件时的一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。
- 要进一步将中断分为外中断和内中断。
每个系统调用由两部分组成
(1)内核函数:是实现系统调用功能的内核代码,作为操作系统的核心驻留在内存中,是共享代码,它运行在内核态。数据也存放在内核空间,通常它不能再使用系统调用,也不能使用应用程序可用的库函数。
(2)接口函数:是提供给应用程序的API,以库函数形式存在Linux的库文件中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言编写。其主要功能是把系统调用号、入口参数地址传送给相应的核心函数,并使用户态下运行的应用程序陷入核 心态。