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

news2024/12/26 14:33:42

第二章 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用层自定义协议(组织数据的格式)

概念 在进行网络传输数据的时候&#xff0c;通常是将要传输的数据组织成一个字符串&#xff0c;再将字符串转换为一个字节流进行网络传输数据&#xff0c;而数据组织的格式是多种多样的&#xff0c;我们只需要保证&#xff0c;客户端和服务器对于字符串的组织和解析统一即可 现…

使用mysql、java开发的平台软件一键安装

前言 一般web项目会使用mysql数据库、java开发应用程序打包成jar包。 有些项目会需要导入初始化的行政区域信息。 流程图 说明 1. 脚本中提供变量去配置当前项目的区域 2. 安装包里需要包含全国所有的区域信息 3. 运行程序的时候就可以根据配置 &#xff0c;调用接口&am…

Linux fork 和 exec 联合使用创建一个全新的进程

复制和替换结合在一起&#xff08;forkexec&#xff09;是产生一个新进程的主要方式。 将复制和替换结合在一起&#xff08;forkexec&#xff09;&#xff1a; 先fork&#xff0c;使系统中多出一个进程&#xff0c;默认情况下&#xff0c;fork之后&#xff0c;父进程和子进程的…

爬虫逆向实战(十四)--某培训平台登录

一、数据接口分析 主页地址&#xff1a;某培训平台 1、抓包 通过抓包可以发现登录是表单提交到j_spring_security_check 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个j_password加密参数 请求头是否加密&#xff1f; 无响应是…

【bug】Unity无法创建项目

bug UnityHub无法创建项目 UnityHub无法创建项目 出现的问题&#xff1a;在创建新项目时弹出来一个 无法创建项目 尝试的方法&#xff1a; 刷新许可证 ❌没用退出账号重新登陆 ❌没用重启电脑 ❌没用 最后发现是什么问题呢&#xff1f; 2021.3.3这个版本我之前在资源管理器中…

mysql binlog 回滚

mysqlbinlog 严格来说mysqlbinlog 不能算回滚&#xff0c;他只是将过去的数据修改记录 重新执行一遍&#xff0c;但是从结果上来看&#xff0c;他也算把数据恢复到任意时间点了&#xff0c;举例来说在昨天的某一刻误删除了一条数据&#xff0c;导致其他数据存储都是异常&#…

C++Qt动态增加垂直滚动条

本博文源于笔者正在工作的一个小内容&#xff0c;内容涉及到为qt动态增加垂直滚动条。文章分为三个部分&#xff0c;问题起源&#xff0c;问题解决方案&#xff0c;问题解决成功效果。思路清晰&#xff0c;文章干货满满&#xff0c;复制源码即可使用。 问题起源 qt中一个页面…

0143 串

目录 4.串 4.1串的定义和实现 4.2串的模式匹配 部分习题 4.串 4.1串的定义和实现 4.2串的模式匹配 部分习题 1.设有两个串S1和S2&#xff0c;求S2在S1中首次出现的位置的运算称为&#xff08;&#xff09; A.求字串 B.判断是否相等 C.模式匹配 D.连…

7-10 奇偶分家

分数 10 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定N个正整数&#xff0c;请统计奇数和偶数各有多少个&#xff1f; 输入格式&#xff1a; 输入第一行给出一个正整N&#xff08;≤1000&#xff09;&#xff1b;第2行给出N个非负整数&#xff0c;以空格分隔。 输…

DNNGP模型解读-early stopping 和 batch normalization的使用

一、考虑的因素&#xff08;仅代表个人观点&#xff09; 1.首先我们看到他的这篇文章所考虑的不同方面从而做出的不同改进&#xff0c;首先考虑到了对于基因组预测的深度学习方法的设计 &#xff0c;我们设计出来这个方法就是为了基因组预测而使用&#xff0c;这也是主要目的&…

leetcode 力扣刷题 数组交集(数组、set、map都可实现哈希表)

数组交集 349. 两个数组的交集排序&#xff0b;双指针数组实现哈希表unordered_setunordered_map 350. 两个数组的交集Ⅱ排序 双指针数组实现哈希表unordered_map 349. 两个数组的交集 题目链接&#xff1a;349. 两个数组的交集 题目内容如下&#xff0c;理解题意&#xff1a…

C++之std::pair<uint64_t, size_t>应用实例(一百七十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

零售行业供应链管理核心KPI指标(三)

完美订单满足率和退货率 完美订单满足率有三个方面的因素影响&#xff1a;订单按时、足量、无损交货。通常情况下零售企业追求线上订单履行周期慢慢达到行业平均水平&#xff0c;就是交付的速度变快了&#xff0c;这个肯定是一件好事情&#xff0c;趋势越来越好。 同时&#…

前端图片转base64,并使用canvas对图片进行压缩

目录 1.图片转base64的应用场景 2.图片转base64代码 3.对上传的图片进行压缩 1.图片转base64的应用场景 图片转base64通常用在用户上传图片的情况下使用&#xff0c;他的作用就是让用户看到预览的图片不受网络的影响。 这是传统的文件传输的流程&#xff1a;首先是用户选择…

浅析基于视频汇聚与AI智能分析的新零售方案设计

一、行业背景 近年来&#xff0c;随着新零售概念的提出&#xff0c;国内外各大企业纷纷布局智慧零售领域。从无人便利店、智能售货机&#xff0c;到线上线下融合的电商平台&#xff0c;再到通过大数据分析实现精准推送的个性化营销&#xff0c;智慧零售的触角已经深入各个零售…

牛客网华为OD前端岗位,面试题库练习记录02

题目一 删除字符串中出现次数最少的字符(HJ23) JavaScript Node ACM 模式 const rl require("readline").createInterface({ input: process.stdin }); var iter rl[Symbol.asyncIterator](); const readline async () > (await iter.next()).value;void (asyn…

【JavaEE基础学习打卡04】JDBC之MySQL数据库安装

目录 前言一、JDBC与数据库二、MySQL数据库1.MySQL数据库2.MySQL服务下载安装3.MySQL服务启动停止4.MySQL命令 三、MySQL客户端安装总结 前言 &#x1f4dc; 本系列教程适用于JavaWeb初学者、爱好者&#xff0c;小白白。我们的天赋并不高&#xff0c;可贵在努力&#xff0c;坚持…

Markdown编辑器 Mac版Typora功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。 Typora Mac版除了支持常见的Markdown语法外&#…

数据库连接池(c3p0和德鲁伊)

目录 连接池介绍 c3p0连接池 传统方法引入jar包 配置文件 德鲁伊连接池 德鲁伊工具类 传统jdbc数据库使用DriverManger来获取&#xff0c;每次向数据库建立连接需要将Connection加载到内存中&#xff0c;频繁的操作会造成占用很多系统资源&#xff0c;造成服务器崩溃&…

【计算机网络】13、ARP 包:广播自己的 mac 地址和 ip

机器启动时&#xff0c;会向外广播自己的 mac 地址和 ip 地址&#xff0c;这个即称为 arp 协议。范围是未经过路由器的部分&#xff0c;如下图的蓝色部分&#xff0c;范围内的设备都会在本地记录 mac 和 ip 的绑定信息&#xff0c;若有重复则覆盖更新&#xff08;例如先收到 ma…