注册
登录
关注:
官网首页
阿里云8折
论坛
wdCDN系统
智能DNS软件
搜索
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
WDlinux官方论坛
»
wdOS|CentOS精简版|CentOS定制版
» Linux内核
无标题文档
wdCP系统
(
介绍
,
功能特性
,
运行环境
,
安装说明
,
演示
,
常见问题
,
使用教程
)
wdCDN系统
(
介绍
,
功能特性
,
运行环境
,
安装说明
,
演示
,
常见问题
,
使用手册
)
wdOS系统
(
介绍
,
功能特性
,
运行环境
,
安装说明
,
演示
,
常见问题
,
使用教程
)
wdDNS系统
(
介绍
,
功能特性
,
运行环境
,
安装说明
,
演示
,
常见问题
,
使用手册
)
注册 发贴 提问 回复-必看必看
wddns免费智能 DNS
开通
本地或虚拟机使 用wdcp
一键包在mysql编 译时"卡住"
【300G高防】双线 无视攻击
wdcp官方技术支持/服务
阿里云8折优惠券
无敌云
腾讯云优惠中,现注册更有260代金额券赠送
返回列表
发帖
marquis
发短消息
加为好友
marquis
当前离线
UID
8142
帖子
665
精华
0
积分
4249
阅读权限
30
在线时间
456 小时
注册时间
2012-7-3
最后登录
2016-3-21
中级会员
1
#
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2013-5-20 22:24
|
只看该作者
提问三步曲:
提问先看教程/FAQ索引(
wdcp
,
wdcp_v3
,
一键包
)及搜索,会让你更快解决问题
1 提供详细,如系统版本,wdcp版本,软件版本等及错误的详细信息,贴上论坛或截图发论坛
2 做过哪些操作或改动设置等
温馨提示:信息不详,很可能会没人理你!论坛有教程说明的,也可能没人理!因为,你懂的
[分享]
Linux内核
Linux系统大致可分为三层:
靠近硬件的底层是内核,即Linux操作系统常驻内存部分。
中间层是内核之外的shell层,即操作系统的系统程序部分。
最高层是应用层,即用户程序部分
Linux有两种不同的含义
严格技术角度:指的时开放源代码的Unix类操作系统的内核
一般意义:指以Linux内核为基础的操作系统,包括内核、系统工具、完整的开发环境和应用
kernel时操作系统的核心程序,由几个不同逻辑功能部分组成:
向外部提供对计算机设备的核心管理及调用,负责对计算机资源的抽象、分配和共享
代码分为两部分:
内核所在的地址空间称作内核空间
其他应用程序称为外部管理程序,大部分是对外围设备进行管理和界面操作,外部管理程序和用户进程所占据的地址空间成为外部空间
Unix内核用C语言写成
单一内核:所有的操作系统功能均被封装在内核中,与外部程序处于不同的地址空间。外部程序智能通过功能调用来访问内核
微内核:内核只提供最基本、最核心的一部分操作,如创建和删除任务、中断管理、进程管理、存储器管理、进程间通信等,而其他功能如文件系统、网络协议栈则在内核外操作。
微内核特点:
使操作系统具有良好的灵活性
操作系统内部结构简单清晰
程序代码维护十分方便
体现了面向对象式软件的结构特征
但是:Linux内核采用单一内核
原因:
注重效率
Linux将代码执行效率作为操作系统第一要务
Linux内核的程序员都是世界各地的黑客,比起结构的清晰,更注重功能的强大和高效率的代码
特点:
每个功能部件不能轻易拆除
从结构上看,Linux操作系统是采用单块结构的操作系统。
一般说来,可以将操作系统划分为内核和系统程序两部分。
进程控制系统用于进程管理、进程同步、进程通信、进程调度和内存管理等。
●内存管理控制内存分配与回收。
●文件系统管理文件、分配文件空间、管理空闲空间、控制对文件的访问并为用户检索数据。
●Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备。
●核心底层的硬件控制负责处理中断以及与机器通信。
收藏
分享
marquis
发短消息
加为好友
marquis
当前离线
UID
8142
帖子
665
精华
0
积分
4249
阅读权限
30
在线时间
456 小时
注册时间
2012-7-3
最后登录
2016-3-21
中级会员
2
#
发表于 2013-5-20 22:24
|
只看该作者
本帖最后由 marquis 于 2013-5-20 23:03 编辑
5.2 进 程 管 理
1.进程及其状态
简单说来,进程就是程序的一次执行过程。
进程至少要有三种基本状态。这三种基本状态是:运行态、就绪态和封锁态(或等待态)。
进程的状态可依据一定的条件和原因而变化
下载
(31.57 KB)
2013-5-20 22:30
运行状态:指当前进程已分配CPOU,它是程序正在处理器上执行的状态。在一般单一CPU机制中,任何时刻处于运行状态的进程至多只有一个。
就绪状态:指进程已具备运行条件,但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU资源的状态。处于该状态的进程可以有多个。
封锁状态:只进程因等待某种事件发生(如等待某一输入、输出操作完成,等待其他进程发来的信号等)而暂时不能运行的状体。处于封锁状态的进程尚不具备运行条件。也成为不可运行状态或挂起状态。可以有多个。
2.Linux进程状态
下载
(103.41 KB)
2013-5-20 22:35
3.进程的模式和类型
在Linux系统中,进程的执行模式划分为用户模式和内核模式
按照进程的功能和运行的程序来分,进程划分为两大类:一类是系统进程,另一类是用户进程
下载
(39.28 KB)
2013-5-20 22:36
4.Linux线程
Linux把线程定义为进程的“执行上下文”
具有一段可执行的程序、专用的系统堆栈空间、私有的“线程控制块”(即thread_struct数据结构)
缺少自己的存储空间
5.2.2 进程的结构
1.task_struct结构
task_struct结构包含下列几方面的信息:
·进程状态
·调度信息
·标志符(PID)
·内部进程通讯(信号、管道、信号量等)
·链接信息(指向父进程、兄弟进程、子进程的指针)
·时间和计时器(记录进程的创建时间和运行所占用的
CPU时间)
·文件系统
·虚拟内存
·处理器信息
2.进程系统堆栈
每个进程都有一个系统堆栈,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息。
每个进程的系统堆栈和task_struct数据结构之间存在紧密联系,因而二者物理存储空间也连在一起
系统堆栈的大小静态确定,用户堆栈可在运行时动态扩展
下载
(37.16 KB)
2013-5-20 22:37
5.2.3 对进程的操作
1.进程的创建
各个进程构成了树形的进程族系
内核在引导并完成了基本的初始化以后,就有了系统的第一个进程(即初始化进程,实际上是内核线程)。除此之外,所有其他的进程和内核线程都由这个原始进程或其子孙进程所创建。
除初始化进程外,其他进程都是用系统调用fork( )和clone( )创建的。
fork( )是全部复制 ,而clone( ) 有选择地复制
2.进程的等待
父进程可用系统调用wait3( )等待它的任一个子进程终止,也可以用系统调用wait4( )等待某个特定的子进程终止。
wait3( )算法如下:
(1)如果父进程没有子进程,则出错返回。
(2)如果发现有一个终止的子进程,则取出子进程的进程号,把子进程的CPU使用时间等加到父进程上,释放子进程占用的task_struct和系统空间堆栈,以供新进程使用。
(3)如果发现有子进程,但都不处于终止态,则父进程睡眠,等待由相应的信号唤醒。
3.进程的终止
进程可使用系统调用exit( )终止自己
其实现算法如下:
(1)撤消所有的信号量。
(2)释放其所有的资源,包括存储空间、已打开的文件、工作目录、信号处理表等。
(3)置进程状态为“终止态”(TASK_ZOMBIE)。
(4)向它的父进程发送子进程终止的信号。
(5)执行进程调度。
4.进程映像的更换
改换进程映像的工作很复杂,是由系统调用execve( )实现的,它用一个可执行文件的副本来覆盖该进程的内存空间。
ELF可执行文件格式示意图
下载
(16.32 KB)
2013-5-20 22:49
execve( )系统调用的基本算法如下:
(1)验证文件的可执行性,即用户
有权执行它。
(2)读文件头,检查它是一个可装入模块。
(3)释放原有的内存空间。
(4)按照可执行文件的要求分配新的内存空间,并装入内存
5.2.4 进程调度
进程调度机制主要涉及到调度方式、调度时机和调度策略
1.调度方式
基本上采用“抢占式优先级”方式
2.调度策略——三种不同的调度策略
SCHED_FIFO——短实时进程,对时间性要求比较强
SCHED_RR——较长时间的实时进程,对应“时间片轮转法”
SCHED_OTHER——交互式的分时进程,这类进程的优先权取决于两个因素:一个因素是进程剩余时间配额;另一个是进程的优先数nice ——优先数越小,其优先级越高
后台进程的优先级低于任何交互(前台)进程的优先级
3.调度时机
(1)当前进程调用系统调用nanosleep( )或者pause( ),使自己进入睡眠状态,主动让出一段时间的CPU使用权。
(2)进程终止,永久地放弃对CPU的使用。
(3)在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长。
(4)当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行。
(5)一个进程通过执行系统调用来改变调度策略或者降低自身的优先权(如nice命令),从而引起立即调度。
TOP
marquis
发短消息
加为好友
marquis
当前离线
UID
8142
帖子
665
精华
0
积分
4249
阅读权限
30
在线时间
456 小时
注册时间
2012-7-3
最后登录
2016-3-21
中级会员
3
#
发表于 2013-5-20 22:26
|
只看该作者
本帖最后由 marquis 于 2013-5-20 23:18 编辑
5.2.5 shell基本工作原理
它不属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并执行用户打入的各种命令,实现用户与Linux核心的接口。
下载
(82.58 KB)
2013-5-20 23:15
后面是本章节的实例部分。请各位同学自己把代码敲到计算机里面,并进行编译、运行。
编译的工具为计算机自带的gcc工具
进程属性
进程的组成元素
程序的当前上下文(context),它是程序当前执行的状态
程序的当前执行目录
程序访问的文件和目录
程序的信任状态,或者叫做访问权限
内存和其他分配给进程的资源
进程标识号
进程的两个知名属性:进程号(Process ID, PID)和父进程号(Parent Process ID,PPID)
PID/PPID都为整数,唯一标识一个进程
所有的进程有个共同的祖先:pid=1的进程,即init进程
下载
(30.09 KB)
2013-5-20 23:15
Real和effective标识号
进程的属性
下载
(33.11 KB)
2013-5-20 23:15
下载
(40.85 KB)
2013-5-20 23:15
用户和用户组的信息
getlogin()函数返回用户的登录名
getpwname()函数以上面的函数返回值为参数,从/etc/passwd文件中返回该登录名的所有信息。
#include <unistd.h>
char *getlogin(void)
#include <pwd.h>
struct passwd *getpwnam(const char *name)
下载
(37.21 KB)
2013-5-20 23:15
使用system创建进程
system函数原型如下:
#include <stdlib.h>
int system(const char *string)
它通过把system传递给/bin/sh –c来执行 string所指定的命令,string中可以包含选项和参数,接着整个命令行(/bin/sh –c string)又传递给系统调用execve(随后介绍)。如果没有/bin/sh,system返回127,如果出现其他错误,则返回-1;如果至此那个成功则返回string的代码
下载
(26.75 KB)
2013-5-20 23:15
Fork系统调用创建进程
fork调用创建一个新进程
语法:
#include <unistd.h>
pid_t fork(void)
如果fork成功,就向父进程返回子进程的pid,并向子进程返回0.
fork创建的新进程是和父进程(出了pid和ppid)一样的副本,包括真实有效的UID,GID,进程组和会话ID、环境、资源限制、打开的文件以及共享的进程段
父进程和子进程之间有一点区别。子进程没有继承父进程的超时设置(使用alarm调用)、父进程的文件锁、或者未决信号。
下载
(28.56 KB)
2013-5-20 23:15
TOP
返回列表
我的Linux|wdlinux
ai|大模型|大数据
开源精选
wdCP V3|Linux服务器/云主机/虚拟主机管理系统
wddns|智能DNS系统|免费智能DNS解析
lamp|lnmp|lnamp|一键安装包
wdCP V2|linux下免费的服务器/虚拟主机管理系统
wdcdn系统|CDN缓存加速管理系统
wdOS|CentOS精简版|CentOS定制版
区块链技术|智能合约|区块链开发
wdlinux学堂|wdOS知识库|linux知识库|教程|文档
站务管理
站务管理
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]