咨询热线:

18929371983

昊林pcb全国服务热线

全国服务热线

18929371983

如果您有任何疑问或是问题, 请随时与我们联系

查看联系方式>>
pcb问题解答 当前位置: 首页 > pcb问题解答

每个进程的pcb和内核放占用多大的内存

时间:2017/5/24 9:17:19

问题描述:linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。   Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各个进程使用,称为"用户空间)。因为每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。   Linux使用两级保护机制:0级供内核使用,3级供用户程序使用。从图中可以看出(这里无法表示图),每个进程有各自的私有用户空间(0~3G),这个空间对系统中的其他进程是不可见的。最高的1GB字节虚拟内核空间则为所有进程以及内核所共享。   内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。   虽然内核空间占据了每个虚拟空间中的最高1GB字节,但映射到物理内存却总是从最低地址(0x00000000)开始。对内核空间来说,其地址映射是很简单的线性映射,0xC0000000就是物理地址与线性地址之间的位移量,在Linux代码中就叫做PAGE_OFFSET.   内核空间和用户空间之间如何进行通讯?   内核空间和用户空间一般通过系统调用进行通信。   如何判断一个驱动是用户模式驱动还是内核模式驱动? 判断的标准是什么?   用户空间模式的驱动一般通过系统调用来完成对硬件的访问,如通过系统调用将驱动的io空间映射到用户空间等。因此,主要的判断依据就是系统调用。   内核空间和用户空间上不同太多了,说不完,比如用户态的链表和内核链表不一样;用户态用printf,内核态用printk;用户态每个应用程序空间是虚拟的,相对独立的,内核态中却不是独立的,所以编程要非常小心。等等。   还有用户态和内核态程序通讯的方法很多,不单单是系统调用,实际上系统调用是个不好的选择,因为需要系统调用号,这个需要统一分配。   可以通过ioctl、sysfs、proc等来完成。 在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。 内核空间(kernel-space) VS 用户空间(user-space) 作为一个Linux开发者,首先应该清楚内核空间和用户空间的区别。关于这个话题,已经有很多相关资料,我们在这里简单描述如下: 现代的计算机体系结构中存储管理通常都包含保护机制。提供保护的目的,是要避免系统中的一个任务访问属于另外的或属于操作系统的存储区域。如在IntelX86体系中,就提供了特权级这种保护机制,通过特权级别的区别来限制对存储区域的访问。 基于这种构架,Linux操作系统对自身进行了划分:一部分核心软件独立于普通应用程序,运行在较高的特权级别上,(Lin......

回答(1).Linux 系统 当前进程使用的内存堆栈可以从task_struct->mm_struct->total_vm中获得虚拟内存使用总量. . 每个进程都有完全属于自己的,独立的,不被干扰的内存空间。此空间,被分成几个段(Segment),分别是Text, Data, BSS, Heap, Stack。用户进程内存空间,也是系统内核分配给该进程的VM(虚拟内存),但并不表示这个进程占用了这么多的RAM(物理内存)。这个空间有多大?命令top输出的VIRT值告诉了我们各个进程内存空间的大小(进程内存空间随着程序的执行会增大或者缩小)。你还可以通过/proc//maps,或者pmap –d 了解某个进程内存空间都分布,比如: #cat /proc/1449/maps … 0012e000-002a4000 r-xp 00000000 08:07 3539877 /lib/i386-linux-gnu/libc-2.13.so 002a4000-002a6000 r--p 00176000 08:07 3539877 /lib/i386-linux-gnu/libc-2.13.so 002a6000-002a7000 rw-p 00178000 08:07 3539877 /lib/i386-linux-gnu/libc-2.13.so 002a7000-002aa000 rw-p 00000000 00:00 0 … 08048000-0875b000 r-xp 00000000 08:07 4072287 /usr/local/mysql/libexec/mysqld 0875b000-0875d000 r--p 00712000 08:07 4072287 /usr/local/mysql/libexec/mysqld 0875d000-087aa000 rw-p 00714000 08:07 4072287 /usr/local/mysql/libexec/mysqld … 当前任务的task_struct中有两个结构,utime和stime分别描述了当前任务在用户态和内核态所消耗的CPU时间,start_time描述了当前任务的起始运行时间,通过单位换算和计算,就可以获得当前任务的CPU率了! . 参考资料: Windows 获取进程内存占用大小 .

回答(2).我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间 需要注意的细节问题: (1) 内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。 (2) Linux使用两级保护机制:0级供内核使用,3级供用户程序使用。 内核态与用户态: (1)当一个任务(进程)执行系统调用而陷入内核代码中执行时,称进程处于内核运行态(内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。 (2)当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。

回答(3).PCB(Process Control Block的缩写)意思为进程控制块。进程的静态描述由三部分组成PCB、有关程序段和该程序段对其进行操作的数据结构集。在Unix或类Unix系统中,进程是由进程控制块,进程执行的程序,进程执行时所用数据,进程运行使用的工作区组成。其中进程控制块是最重要的一部分。进程控制块是用来描述进程的当前状态,本身特性的数据结构,是进程中组成的最关键部分,其中含有描述进程信息和控制信息,是进程的集中特性反映,是操作系统对进程具体进行识别和控制的依据。PCB一般包括:1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID。PID一般是整型数字2.特征信息:一般分系统进程、用户进程、或者内核进程等3.进程状态:运行、就绪、阻塞,表示进程现的运行情况4.优先级:表示获得CPU控制权的优先级大小5.通信信息:进程之间的通信关系的反映,由于操作系统会提供通信信道6.现场保护区:保护阻塞的进程用7.资源需求、分配控制信息8.进程实体信息,指明程序路径和名称,进程数据在物理内存还是在交换分区(分页)中9.其他信息:工作单位,工作区,文件信息等

回答(4).课本58页第三段 用户级和内核级的区别楼下补充

回答(5).进程控制块(PCB,Process Control Block),台湾译作行程控制表,亦有译作任务控制表,是操作系统内核中一种数据结构,主要表示进程状态。   虽各实际情况不尽相同,PCB通常记载进程之相关信息,包括:   进程状态:可以是new、ready、running、waiting或halted等。当新建一个进程时,系统分配资源及PCB给它。而当其完成了特定的任务后,系统收回这个进程所占的资源和取消该进程的PCB就撤消了该进程。程序计数器:接着要运行的指令地址。CPU寄存器:如累加器、索引寄存器(en:Index register)、堆栈指针以及一般用途寄存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因计算机架构有所差异。CPU排班法:优先级、排班队列等指针以及其他参数。存储器管理:如标签页表(en:Page table)等。会计信息:如CPU与实际时间之使用数量、时限、帐号、工作或进程号码。输入输出状态:配置进程使用I/O设备,如磁带机。总言之,PCB如其名,内容不脱离各进程相关信息。

回答(6).一般是电源模块 ,控制模块, 驱动模块 ,端口模块

回答(7).每个进程在内核中都有一个task_struct结构体来维护进程的相关信息,如在Linux内核中称为进程描述符,在操作系统理论中,称为PCB。它包含该进程当前打开的所有文件的信息,称为文件描述符表。在内核中,用files_struct结构体表示,每个表项称为文件描述符,每个表项都包含一个指向已打开文件的指针。 在用户程序中,文件描述符指的是文件描述符表的索引(0,1,2,3,·······),用int型变量来保存。

回答(8).简单理解为:内核空间是内核使用,用户空间是应用程序使用;除非编译内核要考虑内核空间,其余情况都可以按照用户空间处理

【返回列表页】
荣誉证书
  • 2小时快速报价
  • 生产层数高达48层
  • 工厂地址:广东省深圳市宝安区沙井
  • 24小时单、双单、加急
  • 生产铜厚高达20oz
  • 详细地址:新和大道西基达利工业园六栋
  • 2-10层加急2-3天
  • 软硬结合线路板
  • 咨询电话:18929371983
  • 12-20层加急4-7天
  • 各类混压线路板
  • 公司座机:0755-29125566
  • 12-20层加急4-7天
  • 特殊工艺线路板
  • Mail邮箱:haolinpcb@163.com
  • 大于≥22层加急7天以上
  • 特殊材料线路板
  • 在线QQ:1301093580
  • 深圳昊林电路有限公司 Copyright ©2016-2017 版权所有 备案图标粤ICP备17023075号   网站XML地图

    展开