内核空间、进程和线程等概念

用户空间与内核空间

现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。

进程切换

为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。这种行为被称为进程切换。因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。
从一个进程的运行转到另一个进程上运行,这个过程中经过下面这些变化:
    保存处理机上下文,包括程序计数器和其他寄存器。
    更新PCB信息。
    把进程的PCB移入相应的队列,如就绪、在某事件阻塞等队列。 选择另一个进程执行,并更新其PCB。
    更新内存管理的数据结构。
    恢复处理机上下文。

进程的阻塞

正在执行的进程,由于期待的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或无新工作做等,则由系统自动执行阻塞原语(Block),使自己由运行状态变为阻塞状态。可见,进程的阻塞是进程自身的一种主动行为,也因此只有处于运行态的进程(获得CPU),才可能将其转为阻塞状态。当进程进入阻塞状态,是不占用CPU资源的。

文件描述符

文件描述符(File descriptor)是计算机科学中的一个术语,是一个用于表述指向文件的引用的抽象化概念。
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。

缓存IO

缓存IO又被称作标准IO,大多数文件系统的默认IO操作都是缓存IO。在Linux的缓存IO机制中,操作系统会将IO的数据缓存在文件系统的页缓存( page cache )中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。
缓存IO的缺点:
数据在传输过程中需要在应用程序地址空间和内核进行多次数据拷贝操作,这些数据拷贝操作所带来的CPU以及内存开销是非常大的。

进程和线程

对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程
有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread)。
所以应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程(线程是进程中的实体,一个线程必须有一个父进程)

多进程

Unix/Linux多进程
Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。
子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。

线程,进程,CPU,内存,硬盘的关系

CPU就是控制发布指令和运算处理数据
硬盘存储数据,主要保存数据。常用的IO操作指的就是操作硬盘
内存临时存储数据,主要是连接硬盘和CPU,是执行者,根据指令工作
线程是进程的一部分
CPU调度的是线程
系统为进程分配资源(内存),不对线程分配资源

时间: 2024-08-19 10:53:23

内核空间、进程和线程等概念的相关文章

进程和线程的概念,区别(理论知识)

进程和线程的概念,区别: 什么是线程????首先,计算机所有指令的执行都是CPU运算,CPU有规则,线程是操作系统能调度的最小单位线程可以简单理解为一堆指令做每一件事背后都是CPU在运算,例如画图.qq这些应用软件寄生在操作系统上画图和qq是独立的软件,各自分一块独立的内存空间硬盘--内存--CPU 慢--快为了安全,画图软件的内存不能访问qq的内存但是,qq或画图有一个整体的东西暴露给操作系统,这个整体的东西就是进程,里面包含对各种资源的调用例如内存的管理,网卡的调用等,对各种资源管理的集合称

全面理解进程和线程的概念、区别和联系

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 进程与线程的一个简单解释 在这个简单易懂的类比下,了解一下进程和线程的宏观概念: 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都有一个自己的地址空间,即进程空间或(虚空间).进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216

Linux中进程与线程的概念以及区别

linux进程与线程的区别,早已成为IT界经常讨论但热度不减的话题.无论你是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了.对于一般的程序员,搞清楚二者的概念并在工作中学会运用是其思考的主要问题:对于资深工程师,如何在系统层面实现两种技术及其各自的性能和实现代价是其思考的主要问题.由此可见进程和线程在IT界的重要地位. 进程和线程是操作系统的基本概念,它们之间既有区别又有联系.从定义来看,它们比较抽象,很难理解.今天给大家打个比方,教大家用类比的方法去理解它,掌握它.其实,

13-Linux中进程与线程的概念以及区别

linux进程与线程的区别,早已成为IT界经常讨论但热度不减的话题.无论你是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了.对于一般的程序员,搞清楚二者的概念并在工作中学会运用是其思考的主要问题:对于资深工程师,如何在系统层面实现两种技术及其各自的性能和实现代价是其思考的主要问题.由此可见进程和线程在IT界的重要地位. 进程和线程是操作系统的基本概念,它们之间既有区别又有联系.从定义来看,它们比较抽象,很难理解.今天给大家打个比方,教大家用类比的方法去理解它,掌握它.其实,

第72课 进程与线程的概念

1. 程序和进程的概念 程序 进程 概念 程序是计算机存储系统中的数据文件 ①源代码程序:文本文件,描述程序行为和功能 ②可执行程序:二进制文件,直接加载并执行. ①广义概念:程序关于某个数据集合的一次运行活动 ②狭义概念:程序被加载到内存中执行后得到进程 区别 程序是硬盘中静态的文件:存储系统中的一段二进制表示 进程是内存中动态的运行实体:数据段.代码段.PC指针等. 联系 一个程序可能对应多个进程.比如,一个程序多次运行,每次运行产生一个进程 一个进程可能包含多个程序.比如,一个程序依赖多个

进程和线程的概念

一:什么是进程 进程是资源(CPU.内存等)分配的基本单位,它是程序执行时的一个实例. 程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列, 进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行. 二:什么是线程 线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位. 一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量. 线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行.同样多线程也

进程与线程的概念

进程 考虑一个场景:浏览器,网易云音乐以及notepad++ 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源.你是不是已经想到在程序A读取数据的过程中,让程序B去执行,当程序A读取完数据之后,让程序B暂停.聪明,这当然没问题,但这里有一个关键词:切换.

linux内核--进程与线程

http://blog.csdn.net/yusiguyuan/article/details/12154823 在<linux内核设计与实现>中第三章讲解了进程管理,在关于进程和线程的概念之间的区别还是由点模糊.书中说道:     进程就是处于执行期的程序.但进程并不仅仅局限于一段可执行程序代码.通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据,持利器状态,一个或多个具有内存映射的内存地址空间以及一个或多个执行线程,当然还包括用来存放全局变量的数据段等.     然而每一个线

操作系统笔记之进程与线程

背景 操作系统设计的7个主题:1. 进程描述和控制2. 内存管理3. 调度4. I/O和文件管理5. 并发和分布式系统6. 嵌入式系统7. 安全 操作系统利用一个或多个处理器的硬件资源,为系统用户提供一组服务,还代表用户来管理辅助存储器和I/O设备. CPU中断的分类:1. 程序中断2. 时钟中断3. I/O中断4. 硬件失效中断 DMA:直接内存存取 概述 典型计算机系统的三个重要接口:1. 指令系统体系结构ISA2. 应用程序二进制接口ABI3. 应用程序编程接口API 进程 三个部分:1.