线程概念与控制

进程为内核数据结构+代码和数据

线程为进程内部的一个执行分值

内核和资源:

进程:承担分配系统资源的基本实体

线程:cpu调度的基本单位

linux的线程是轻量级进程,或者用轻量级进程模拟实现的

单进程:内部只有一个线程的进程

操作系统申请物理内存都是4kb

写时拷贝是把变量对应的页进行写时拷贝

共享内存必须是4kb整数倍也是因为这个

缺页中断:

CPU给MMU的虚拟地址,在TLB和页表都没有找到物理页,就是缺页异常,却也中断会交给PageFaultHandle处理,

如果是硬缺页错误,此时物理内存中没有对应的物理页,需要CPu打开磁盘设备读取到物理内存中,再让MMU建立虚拟地址和物理地址的映射

如果是软缺页错误,此时物理内存中存在对应物理页,但是可能是其他进程调入的,发生却也异常的进程不知道。此时MMU只需要建立映射

线程之间切换需要操作系统做更少的工作

线程切换时虚拟内存空间仍然是相同的,进程切换是不同的,这种损耗是将寄存器中的内容切换出

隐藏的损耗是上下文的切换会扰乱处理器的缓存机制,一旦去切换上下文,处理器中所有已经缓存的内存地址作废,改变虚拟内存空间时,TLB会被全部刷新,但是线程的切换中不会这样

线程具有独立的上下文

线程具有独立的栈结构

线程是共享地址空间的

同⼀地址空间,因此TextSegment、DataSegment都是共享的,如果定义⼀个函数,在各线程中都可以调用,如果定义⼀个全局变量,在各线程中都可以访问到,除此之外,各线程还共享以下进程资源和环境:

文件描述符表 

每种信号的处理方式

当前工作目录

用户id与组id

单个线程如果出现除零 野指针问题导致线程崩溃 进程也会随之崩溃

linuxpthread库

把轻量级进程封装起来,给用户提供一批创建线程的接口

linux下没有真线程 

线程id是线程控制块的起始虚拟地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值