Linux操作系统体系结构 ( 3 ) -【Linux通信架构系列 】

系列文章目录

C++技能系列
Linux通信架构系列
C++高性能优化编程系列
深入理解软件架构设计系列
高级C++并发线程编程

期待你的关注哦!!!
在这里插入图片描述

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

Linux操作系统体系结构

  • 系列文章目录
  • 1、`操作系统/内核` - 软件
  • 2、`系统调用`其实就是一些库函数,写代码时调用即可
  • 3、`shell`是一个命令行解释器,是Linux系统中用户与操作系统内核交互的主要方式之一
  • 4 、`用户态`和`内核态`之间的切换

要想把程序编好,必须对Linux操作系统体系结构有所了解,一般来说传统的Linux操作系统体系结构如图:
Linux操作系统体系结构 ( 3 ) -【Linux通信架构系列 】_第1张图片

图1 传统Linux操作系统体系结构图

一般情况下,Linux操作系统的结构体系分为用户态和内核态。

1、操作系统/内核 - 软件

用于控制计算机的硬件资源,提供应用程序运行的环境。之所以称为内核,是因为比较小,且位于整个体系结构的核心。

我们编写的程序,要么运行在用户态,要么运行在内核态,一般情况下运行在用户态,当程序要执行一些特殊代码时,程序就可能切换到内核态。这种切换有操作系统控制,不需要认为介入

换一个角度理解用户态和内核态,用户态可以理解为图1中最外圈应用程序的活动空间。但是,我们所开发的应用程序的运行,往往需要访问一些资源(如读写文件要访问磁盘,调用malloc要申请内存,程序中可能还要访问传真机、打印机等外部设备),为了让应用程序能够访问这些资源,内核必须提供供应用程序访问的接口,也就是图1中的系统调用(内核对外接口)。

2、系统调用其实就是一些库函数,写代码时调用即可

一般情况,操作系统会提供200~300个库函数供我们调用,这些库函数在系统内部高度封装,我们无需关心细节,只需调用即可。

3、shell是一个命令行解释器,是Linux系统中用户与操作系统内核交互的主要方式之一

当用Xshell链接Ubuntu Linux虚拟机的时候,使用ps命令查看,就能看到一个bash进程(这个bash进程是自动开启的,用Xshell链接虚拟机时,系统就启动了一个bash。这个bash是被login/sshd用fork函数开启的。

bash是borne again shell (重新装配的shell)的缩写,是shell的一种,Linux默认采用bash这种shell。

通俗地说,bash也是一个可执行程序,这种可执行程序的主要作用是:把用户输入的命令翻译给操作系统,所以bash相当于一个命令解释器。

bash也可以手动创建,因为它是一个可执行程序。

尝试用whereis找到bash的位置,直接执行,然后使用exit退出当前的bash,如图:
Linux操作系统体系结构 ( 3 ) -【Linux通信架构系列 】_第2张图片

图2 手动执行bash并使用exit退出该bashs

如果第二次输入exit,则会从当前使用的bash中退出Xshell会与Ubuntu Linux虚拟机断开连接(因为第一次突退出的是自己执行的bash,第二次退exit退出的是login/sshd进程用函数fork创建的bash进程)。

观察图1中shell的位置,它正好夹在系统调用和应用程序之间,起分隔系统调用和应用程序的作用,同时也有胶水(将系统调用和应用程序黏在一起)的感觉。

操作系统的内核部分,有进程管理,文件系统、设备驱动、网络等各种资源的管理。在内核和用户空间之间,通过系统调用(system call)接口实现对各种资源功能的调用。

4 、用户态内核态之间的切换

(1)用户态权限小,内核态权限大,权限大意味着能做一些危险的事。
(2)这些调用接口是系统提供并统一管理的。操作系统资源有限,如果许多程序同时访问这些资源,一旦产生访问冲突,或资源耗尽,就可能导致系统崩溃。

你可能感兴趣的:(Linux,通信架构实战,linux,架构,服务器,c++)