内核必须实现一组服务和相应的接口,应用程序则可以使用这些接口,而不是直接与硬件打交道。

Linux内核主要由以下5个子系统组成:进程调度、内存管理、虚拟文件系统、进程间通信以及设备驱动。

在这个组成中,最核心的就是进程管理->进程调度和进程间通信。

在Linux系统中,我们编写的任何应用层程序,不管是上层还是属于中间框架层的代码,甚至是最底层的驱动代码,都可以以进程的形式在系统上运行。CPU可以运行在用户态和内核态。

在Linux 进程/内核模型中,每个进程就是执行在机器上的唯一的镜像,它们对系统服务具有排他性,当进程需要访问系统服务时,它会发出系统调用(对内核的请求),硬件则将权利模式由用户状态切换到内核模式。内核过程又会适时通过硬件强制返回用户模式。当一个程序执行在用户模式下,它就不能直接地访问内核数据结构或内核的程序。

进程是动态的实体,其在系统中的生命是有限的。Linux内核是以线程为调度的单位。

任务:进程的集合,其中可以包含一个或多个进程。

异步:两个事件的发生是没有任何关联的,一件事的发生不会因另一事件的发生而有任何变化。

同步:两个事件之间有先后顺序之分,一个事件的发生一定是发生在某个事件之后。

如:一个程序访问某一硬件资源时,另一个程序也要访问该硬件资源,后一个程序就要等待前一个程序,我们就说这两个程序同步访问该硬件资源。(同步不是两个事件同时发生)

内核不是进程,而是进程的管理者。

内核例程如何被激活:1.进程调用系统调用;2.CPU正执行进程发出的异常信号,表示诸如无效指令等非常规条件发生;3.外围设备发出一个中断信号到CPU,每个中断信号都是由一个叫做中断处理句柄的内核程序来处理的,中断与CPU的执行是异步的,所以中断的发生时不可预期的;4.内核线程被调度执行。

异常与中断的区别:

相同点:都会导致CPU停下当前的进程进入专门的处理例程。

不同点:异常是同步发生的,它一定是发生在某一错误后,而中断是异步发生的,它的发生时随机的。

Linux进程/内核模型的更多相关文章

  1. linux进程池模型

    static int nchildren;static pid_t* pids;int main(int argc,char**argv){ int listenfd,i; socklen_t add ...

  2. linux进程模型总结

    Linux进程通过一个task_struct结构体描述,在linux/sched.h中定义,通过理解该结构,可更清楚的理解linux进程模型.       包含进程所有信息的task_struct数据 ...

  3. Linux进程模型

    ----原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/08/01/2617884.html------ Linux进程通过一个task_st ...

  4. Linux和进程内存模型

    一.Linux和进程内存模型 jvm是一个进程的身份运行在linux系统上,了解linux和进程的内存关系,是理解jvm和Linux内存关系的基础. 硬件.系统.进程三个层面的内存之间的概要关系 1. ...

  5. Linux下的进程类别(内核线程、轻量级进程和用户进程)--Linux进程的管理与调度(四)

    本文中出现的,内核线程,轻量级进程,用户进程,用户线程等概念,如果不太熟悉, 可以参见 内核线程.轻量级进程.用户线程三种线程概念解惑(线程≠轻量级进程) Linux进程类别 虽然我们在区分Linux ...

  6. linux进程的地址空间,核心栈,用户栈,内核线程

    linux进程的地址空间,核心栈,用户栈,内核线程 地址空间: 32位linux系统上,进程的地址空间为4G,包括1G的内核地址空间,和3G的用户地址空间. 内核栈: 进程控制块task_struct ...

  7. Linux操作系统进程模型分析进程

    Linux操作系统简介 Linux拥有现代操作系统的功能,如真正的抢先式多任务处理,支持多用户内存,保护虚拟内存,支持SMP.UP,符合POSIX 标准联网.图形用户接口和桌面环境具有快速性.稳定性等 ...

  8. Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)

    1 非抢占式和可抢占式内核 为了简化问题,我使用嵌入式实时系统uC/OS作为例子 首先要指出的是,uC/OS只有内核态,没有用户态,这和Linux不一样 多任务系统中, 内核负责管理各个任务, 或者说 ...

  9. Linux内核线程kernel thread详解--Linux进程的管理与调度(十)【转】

    转自:http://blog.csdn.net/gatieme/article/details/51589205 日期 内核版本 架构 作者 GitHub CSDN 2016-06-02 Linux- ...

随机推荐

  1. Day5模块-random模块

    random:随机数 >>> import random>>> print(random.random()) #生成随机小数0.6906362176182085 & ...

  2. vue-router 中router-view不能渲染

    最近在做一个vue的项目,其中使用了vue2.0,vue-router2.0.在使用vue-router的时候跳了一个很大的坑,router-view不能渲染,花费了好多时间终于发现了原因. 项目目录 ...

  3. 网站权限管理 之 角(jue)色管理

    公司或网站的正常运行,离不开管理员对各个员工的合理分配,那先看看权限管理中的角色管理好了: 要更改用户的角色,那么先来理一下思路: (1)用户现在是什么角色? (2)用户将要成为什么角色? (3)怎样 ...

  4. 在wamp下使用netbeans开启Xdbug

    1.到http://www.xdebug.org 下载与PHP对应的xdebug版本,也可以把phpinfo源码粘贴到http://www.xdebug.org/find-binary.php,提交后 ...

  5. 一个IT人员实用的工具:Tmux

    1.Tmux安装 tmux下载地址: http://sourceforge.net/projects/tmux/files/tmux/tmux-1.6/tmux-1.6.tar.gz/download ...

  6. C# 特性参数(注解属性加在参数前面)

    特性参数 webapi 框架里有很多特性参数,为了解除一些新人的疑惑,写个小例子分享下. class Program { static void Main(string[] args) { var m ...

  7. #415 Div2 C

    #415 Div2 C 题意 给定一个数字集合,找到所有子集合最大值与最小值之差的和. 分析 列式子,找规律. $ (a_2 - a_1) * 2^0 + (a_3 - a_1) * 2^1 + .. ...

  8. javaSE_07Java中类和对象-封装特性

    一.谈谈什么是面向对象的思维 理解面向对象,重点是要思考以下的问题 面向过程 vs 面向对象 Ø 谈谈什么是面向过程的编程思想? Ø 为什么有面向过程还要有面向对象? Ø 谈谈什么是面向对象的编程思想 ...

  9. Nodejs-express 4.0框架 简单介绍

    http://www.expressjs.com.cn/4x/api.html  这个是express API的中文手册 但是只是翻译了一点 英语比较差比较难受. 1. 关于安装 现在网上查的时候有一 ...

  10. Iterator invalidation(迭代器失效)

    一.vector 所有读操作.swap.std::swap:都不会引起迭代器失效... clear.operator=.assign:都会引起全部变量迭代器失效 reserve.shrink_to_f ...