第二章 Linux系统-系统接口管理

11 篇文章 0 订阅

第二章 Linux系统-系统接口管理

​ 操作系统接口时架构在硬件上的第一层软件,时计算机底层硬件和用户之间的接口,利用操作系统才能使用应用程序(或用户)对系统硬件的访问。任何操作系统都会想上层提供接口,操作系统接口是方便用户使用计算机系统的关键。操作系统的接口分为用户接口和程序接口两大类,用户接口又包括命令接口和图形接口。

  • **命令接口:**操作系统提供的一组连接命令接口,用户通过输入相关命令,获得操作系统的服务,控制用户程序的执行。
  • **图形接口:**通过突变、窗口、菜单等形成直观易懂、使用方便的计算机操作环境,以鼠标驱动的方式使用系统的用户界面。
  • **程序接口:**有一组系统调用命令组成的,这些命令可供应用程序使用,使程序员访问系统资源,系统调用是操作系统提供给应用程序访问系统资源的唯一接口,每个系统调用都是一个能完成功能的子程序。

1.Shell命令接口

​ Shell是Linux操作系统的最外层,也称为外壳。一方面它可以作为操作系统的命令接口,以交互的方式解释和执行用户输入的命令,或自动解释和执行预先设定好的一连串命令,实现用户与计算机的交互。另一方面,Shell也能用作解释性的编程语言。Linux下的Shell命令接口由一组命令和命令解释程序Shell组成

​ Shell来源于UNIX系统,在UNIX诞生之初,只配有一个命令解释器,它用于解释和执行用户的命令。1979年,贝尔实验室的Bourne开发出第一个Shell程序—B Shell(bsh),20世纪80年代,Bill Joy开发了C Shell(csh)。在此后很长一段时间,人们用B Shell来编程,C Shell来实现交互。后来贝尔实验室的大卫.科恩开发了K Shell,它融合了B Shell和C Shell的特点,广受用户的欢迎。

​ 还有一种Shell版本尤为著名,就是Bourne Again Shell(bash)。bash是GNU计划的一部分,用于替代B Shell,它用于基于GNU的Linux系统。常见的Shell版本有:

  • bsh:最经典的Shell,每种Linux、UNIX都可用;

  • csh:其语法与C语言相似,交互性更好;

  • ksh:结合了csh和bsh的优点;

  • tcsh:csh的扩展;

  • bash:bsh的扩展,结合了csh和ksh的优点;

  • zsh:结合了bash、tcsh的许多功能。

    大多数的Linux系统默认使用bash。Linux常用的shell可以通过/etc/shells文件查看:

cat /etc/shells

2.GNOME桌面环境

​ 1999年,墨西哥程序员Miguel开发了Linux下的桌面GNOME1.0。GNOME是基于GPL的完全开放的软件,可以让用户容易地使用和配置计算机。GNOME遵照GPL许可发行,得到Red Hat等公司的大力支持,成为了众多Linux发行版默认安装的桌面环境,GNOME即GNU网络对象模型环境(GNU Network Object Model Environment)。

​ GNOME的官方网站为:www.gnome.org。Ubuntu20使用了GNOME3.38版本作为默认的桌面环境。在GNOME模式下,桌面主要由3部分组成:状态栏、dock面板(任务栏)、桌面区。

image-20230815144431862

GNOME下的快捷键:

快捷键作用
Super(Windows)打开活动搜索
Ctrl+Alt+T打开一个或多个命令行窗口
Super+L(Ctrl+Atl+L)锁屏
Super+D(Ctrl+Alt+D)最小化所有程序,显示桌面
Super+A显示应用菜单
Super+Tab(Alt+Tab)在运行间的应用程序间切换
Super+方向键移动窗口位置
Super+M(Super+V)切换到状态栏,并显示日期
Super+空格切换输入法
Ctrl+Q(Ctrl+W)关闭应用程序窗口
Ctrl+Alt+方向键切换工作区
Ctrl+Alt+DEL注销系统

3.登录、注销、关机和重启

3.1.登录系统

​ Linux是一个多用户、多任务的操作系统,本机用户和任何访问该系统的合法用户都拥有一个账号,通过用户名+密码的方式进行登录验证,验证通过后就能进入系统。

​ Linux的超级用户为root(根用户),相当于Windows中的Administrator,对系统有完全的控制权。Ubuntu默认以普通用户登录,Linux采用软件的方式,在一个物理控制台上虚拟了多达12各控制台,包括6个字符控制台和6个图形控制台,控制台之间可以通过Ctrl+Alt+Fn组合键来切换,其中F1-F6为字符控制台,F7对应图形控制台(默认启动显示器显示F7)。

​ Linux除了控制台登录外,还可以远程登录,常用的远程登录工具有MobXterm、XShell等。

3.2.注销系统

​ 除了上述的快捷键Ctrl+ALT+DEL来注销用户之外,我们还可以通过面板的向下箭头来注销用户或关机。

3.3.关机和重启

​ 关于关机和重启,除了在图形控制台控制之外,我们一般采用命令的方式来操作这一功能。

poweroff							# 关机
reboot								# 重启
halt								# 挂起

​ 除了上述命令外,还有其他的命令用来关机或重启,比如"shutdown",而且它还有很多拓展功能:

shutdown -h now					// 立即关闭系统
shutdown -r now					// 立即重启系统
shutdown -h +5					// 	5分钟后关机
shutdown -r +10 'The system will be rebooted'		// 10分钟后重启,同时通知其他用户

​ 对于延时关机或重启操作,必要时可执行“shutdown -c”命令或按下“Ctrl+C‘取消:

shutdown -c					// 取消延时关机或重启

4.系统调用

​ 操作系统作为系统软件,它的任务是为用户的应用程序提供良好的运行环境。因此,操作系统内核提供了一些列内核函数,通过一组称为系统调用的接口提供给用户使用。系统调用的作用是把应用程序的请求传递给系统内核,然后调用相应的内核函数完成所需的处理,最终将处理的结果返回给用户的应用程序。所以说,系统调用是应用程序和系统内核之间的接口。

​ 系统调用在系统中的主要作用如下:

  • 控制硬件。如把用户程序的运行结果写入文件,可以利用write系统调用来实现。由于文件所在的介质必然是磁盘等硬件设备,所以该系统调用就是对硬件实施的控制。
  • 设置系统状态或读取内核数据。如系统时钟就属于内核数据,要想在用户程序中显示系统时钟,就必须通过读取内核数据来实现,这通过time系统调用来处理。
  • 进程管理。如在应用程序中要创建子进程,就需要利用fork系统调用来实现。

​ 在Linux中常用的系统调用按照功能可分为进程控制、文件系统控制、存储管理、网络管理、socket控制、用户管理和进程管理8类。

​ 常用的进程控制类系统调用如下:

系统调用功能系统调用功能
fork创建子进程getpriority获取调度优先级
clone按指定条件创建子进程setpriority设置调度优先级
execve运行可执行文件pause挂起进程,等待信号
exit终止进程wait等待子进程终止
getpid获取进程标识号

​ 常用的文件系统控制类系统调用如下:

系统调用功能系统调用功能
open打开文件mkdir创建目录
create创建新文件symlink创建符号链接
read读文件mount安装文件系统
write写文件umount卸载文件系统
truncate截断文件ustat获取文件系统信息
chdir改变当前工作目录utime改变文件的访问修改时间
stat获取文件状态信息

​ 常用的系统控制类系统调用如下:

系统调用功能系统调用功能
_sysctl读写系统参数getrusage获取系统资源使用情况
uselib选择要使用的二进制函数库reboot重新启动
swapon打开交换文件和设备sysinfo获取系统信息
alarm设置进程闹钟stime设置系统日期和时间
time获取系统时间times获取系统运行时间
uname获取当前UNIX系统的名称、版本、和主机等信息

​ 常用的存储管理类系统调用如下:

系统调用功能系统调用功能
mlock内存页面加锁mremap重新映射虚拟内存地址
munlock内存页面解锁msync将映射内存中的数据写回磁盘
mlockall调用进程所有内存页面加锁mprotect设置内存映像保护
munlockall调用进程所有内存页面解锁getpagesize获取页面大小
mmap映射虚拟内存页sync将内存缓冲区数据写回硬盘
munmap接触内存页映射cacheflush将指定缓冲区的内容写回磁盘

​ 常用的网络管理类系统调用如下:

系统调用功能系统调用功能
getdomainname获取域名sethostid设置主机标识号
setdomainname设置域名gethostname获取主机名称
gethostid获取主机标识号serhostname设置主机名称

​ 常用的socket控制类系统调用如下:

系统调用功能系统调用功能
socketcallsocket系统调用listen监听socket端口
socket建立socketselect对多路同步I/O进行轮询
bind绑定socket到端口shutdown关闭socket上的连接
connect连接远程主机getsockname获取本地socket名字
accept响应socket连接请求getsockopt获取端口参数
send通过socket发送信息setsockopt设置端口参数
recv通过socket接收信息

​ 常用的用户管理类系统调用如下:

系统调用功能系统调用功能
getuid获取用户标识号setuid设置用户标识号
getgid获取组标识号setgid获取组标识号
setregid分别设置真实、有效的组标识号setreuid分别设置真实、有效的用户标识号
getresgid分别获取真实、有效的和保存过的组标识号setresgid分别设置真实、有效和保存过的组标识号
getresuid分别获取真实、有效和保存过的用户标识号setresuid分别设置真实、有效和保存过的用户标识号

​ 常用的进程通信类系统调用如下:

系统调用功能系统调用功能
sigaction设置对指定信号的处理方法pipe创建管道
sigpending为指定的被阻塞信号设置队列semctl信号量控制
sigsuspend挂起进程,等待特定信号semop信号量操作
kill向进程或进程组发信号shmctl控制共享内存
msgctl消息控制shmget获取共享内存
msgget获取消息队列shmat连接共享内存
msgsnd发消息shmdt拆卸共享内存
msgrcv收消息

​ **示例1:**获取当前进程的标识号,通过系统调用getpid来实现,我们在当前目录下创建getpid.c文件,文件内容如下:

# include <syscall.h>
# include <unistd.h>
# include <stdio.h>
# include <sys/types.h>

main() {
	long i;
	i = getpid();
	printf("getpid()=%ld\n",i);

}

​ 然后保存后,用命令gcc getpid.c编译文件,如果没有gcc命令,可用sudo apt install gcc命令来下载,最后运行该文件./a.out

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值