Linux进程/内核模型

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

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

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

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

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

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

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

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

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

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

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

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

异常与中断的区别:

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

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

时间: 2024-10-20 10:43:33

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

linux进程池模型

static int nchildren;static pid_t* pids;int main(int argc,char**argv){ int listenfd,i; socklen_t addrlen; void sig_int(int); pid_t child_make(int,int,int); if(argc==3) listenfd=Tcp_listen(NULL,argv[1]),argv[2],&addrlen); else err_quit("usage:serv

linux进程原理

Linux进程 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能 Process: 运行中的程序的一个副本: 存在生命周期 Linux内核存储进程信息的固定格式:task struct 多个任务的的task struct组件的链表:task list 进程创建: init 父子关系 进程:都由其父进程创建 fork(), clone() 进程优先级: 0-139: 1-99:实时优先级: 100-139:静态优先级: 数字越小,优先级越高: Nice值: -20,19 Bi

基于Linux进程模型分析

1.进程与线程  1.0  进程: 进程是正在运行的程序的实例(an instance of a computer program that is being executed). 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 1.1  线程: 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元. 1.2  进程与线程的关系和区别:

第一次作业:基于Linux进程模型分析

一.关于线程和进程 1.进程  进程是指在系统中正在运行的一个应用程序 2.线程 线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元 3.进程与线程的关系  · 对于操作系统而言,其调度单元是线程.一个进程至少包括一个线程,通常将该线程称为主线程. · 一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务 · 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. · 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同

第一次作业:关于Linux进程模型及CFS调度器分析

第一次作业内容 挑选一个开源的操作系统,深入源码分析其进程模型,具体包含如下内容: 操作系统是怎么组织进程的 进程状态如何转换(给出进程状态转换图) 进程是如何调度的 谈谈自己对该操作系统进程模型的看法 1. 前言 本文基于Linux Kernel 2.6.28 的源代码,分析本版本linux的进程模型和CFS调度器的基本算法. 源码浏览地址:https://elixir.bootlin.com/linux/v2.6.28/source 2. 进程 2.1 进程的定义 <计算机操作系统>这门课

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

linux进程的地址空间,核心栈,用户栈,内核线程 地址空间: 32位linux系统上,进程的地址空间为4G,包括1G的内核地址空间,和3G的用户地址空间. 内核栈: 进程控制块task_struct中保存了2个page大小的信息. 为什么每一个进程都是用各自的内核栈呢? 引用(http://hi.baidu.com/iruler/blog/item/0c3363f377ccc5c90a46e023.html)“ 假设某个进程通过系统调用运行在内核态(使用这个全局内核堆栈),此时如果被抢占,发生

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

日期 内核版本 架构 作者 GitHub CSDN 2016-06-02 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的描述 内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程就是内核的分身,一个分身可以处理一件特定事情.内核线程的调度由内核负责,一个内核线程处于阻

Linux内核分析:实验六--Linux进程的创建过程分析

刘畅 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本次实验在MenuOS中加入fork系统调用,并通过GDB的调试跟踪,近距离的观察Linux中进程创建的过程.阅读Linux进程部分的源码,结合起来理解Linux内核创建新进程的过程. Linux中对进程的描述 Linux中task_struct结构体用于描述系统中的进程,对应x86机器的此结构体定义放在了/include/li

Linux下的进程类别(内核线程、轻量级进程和用户进程)以及其创建方式--Linux进程的管理与调度(四)

本文声明 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的创建 本文中出现的,内核线程,轻量级进程,用户进程,用户线程等概念,如果不太熟悉, 可以参见 内核线程.轻量级进程.用户线程三种线程概念解惑(线程≠轻量级进程) Linux进程类别 虽然我们在区分Linux进程类别, 但是我还是想说Linux下只有一种类型的进程,那就是task_str