Linux操作系统博大精深,其中对线程,IO,文件系统等概念的实现都很有借鉴意义。
本章主要介绍linux系统下针对文件i/o提供的系统调用方法,了解linux系统针对文件操作提供的底层支持,有助于增加对linux系统下文件处理的底层理解。sdk安全组件通过华为公司的虚拟操作系统抽象层和各个具体的操作系统适配对接(目前,支持的操作系统包括ios、android),屏蔽底层操作系统的差异,向上提供统一的本地加解密接口、兼容标准socket的安全通信接口,方便各类自研及第三方的应用集成,使之具备数据加密传输、本地文件加解密等安全能力,如本方案的anyoffice客户端软件及第三方应用espace%20mobile等。可使用的终端包括hmc,显示卡(接显示器),串口三种方式,如果服务器使用串口方式安装的操作系统,之后将服务器接入hmc,hmc的终端无法打开分区操作系统,同样通过显示卡终端也无法打开操作系统,只能通过相同位置的串口终端才能正常打开,原因在于系统使用的终端信息被记录在了sms菜单和操作系统中,hmc要想顺利接管操作系统就必须对这些信息进行修改,下面就来详细讨论一下hmc接管过程:。
>%20进程、程序与线程
>%20
>%20程序
>%20
>%20%20程序,简单的来说就是存在磁盘上的二进制文件,是可以内核所执行的代码%20
>%20
>%20进程
>%20
>%20%20当一个用户启动一个程序,将会在内存中开启一块空间,这就创造了一个进程,一个进程包含一个独一无二的PID,和执行者的权限属性参数,以及程序所需代码与相关的资料。
>%20%20进程是系统分配资源的基本单位。
>%20%20一个进程可以衍生出其他的子进程,子进程的相关权限将会沿用父进程的相关权限。
>%20
>%20线程
>%20
>%20%20每个进程包含一个或多个线程,线程是进程内的活动单元,是负责执行代码和管理进程运行状态的抽象。
>%20%20线程是独立运行和调度的基本单位。
子进程和父进程
进程的层次结构(父进程与子进程)在进程执行的过程中可能会衍生出其他的进程,称之为子进程,子进程拥有一个指明其父进程PID的PPID。子进程可以继承父进程的环境变量和权限参数。
于是,linux系统中就诞生了进程的层次结构——进程树。
进程树的根是第一个进程(init进程)。
过程调用的流程:%20fork%20&%20exec一个进程生成子进程的过程是,系统首先复制(fork)一份父进程,生成一个暂存进程,这个暂存进程和父进程的区别是pid不一样,而且拥有一个ppid,这时候系统再去执行(exec)这个暂存进程,让他加载实际要运行的程序,最终成为一个子进程的存在。
服务与进程
简单的说服务(daemon)就是常驻内存的进程,通常服务会在开机时通过init.d中的一段脚本被启动。
进程通信
进程通信的几种基本方式:管道,信号量,消息队列,共享内存,快速用户控件互斥。
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,
也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都
复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
%20%20%20%201)在父进程中,fork返回新创建子进程的进程ID;
%20%20%20%202)在子进程中,fork返回0;
%20%20%20%203)如果出现错误,fork返回一个负值;