多核多线程基础

本文介绍了CPU、内存和总线的基础知识,强调了操作系统在管理进程和线程中的作用。多线程分为用户级、内核级和混合线程模型,各有优缺点。线程上下文切换涉及进程ID、内存和寄存器等资源,线程在通信和同步方面相比进程更具优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cpu:
编译器将c程序转换为汇编代码,编译器选项和开关影响编译器的工作
c++程序--->编译器----->汇编代码----->汇编器-------->处理器本地语言

内存:
典型cpu仅对保存在寄存器中的数据进行操作。
cpu<----reg(64bit)<----L1 cache<----L2 cache(处理器外部)<-----系统主存RAM<-----虚拟内存(外部磁盘)io设备
注:在二级存储器中保存的数据和指令必须通过io通道或者总线才能到达RAM。到达RAM后通过系统总线到达L1cache。

总线:
计算机中的子系统通过总线进行通信。
传统上,总线分为cpu-内存总线和io总线。
基本的系统配置主要由两个总线:系统总线(前端总线fsb)和io总线。如果系统存在cache还会有后端总线bsb,用于连接处理器和cache。
操作系统的角色:
操作系统为开发人员的程序链接到硬件提供了两个软件层:应用程序接口api和系统程序接口spi。

进程和程序:
一个进程可能是由多个任务组成,而每一个任务可以和一个或者多个进程关联,进程是操作系统创造的。 一个工作单元想要被称为进程,它必须拥有由操作系统指派的地址空间,必须有进程id,必须拥有状态和进程表中的表项
线程更加便于编程,因为线程共享相同的地址空间,使得线程之间的通信和同步都容易很多。线程相比于进程系统花销更少(进程之间的通信和启动时间),可以创建的线程数目远多于进程数目。

多线程:
线程分为用户级线程和内核级线程,分贝运行在用户模式(进程执行程序或链接库中的指令)和内核模式(进程或者线程在进行系统的调用,可以访问内核空间中定义的对象)
三种线程模型:
用户级线程(多对一)、内核级线程(一对一)、混合线程
用户级线程:驻留在用户空间或者模式,运行时库管理的这些线程也位于用户空间,对于操作系统不可见,无法被调度到处理器内核。每个线程并不具有线程的上下文。
内核级线程:
驻留在内核空间,是内核对象,用户线程被绑定到一个内核线程(在生命周期内),一旦用户线程终止,两个线程都将离开系统。操作系统为每个线程创建上下文。
混合线程:
是用户线程和内核线程的交叉,使得库和操作系统都可以管理线程。用户线程由运行时库调度器管理,内核线程由操作系统调度器管理。
线程上下文:
当一个进程从内核中移出,另一个进程变成活动,这就是上下文切换。
进程上下文信息包括:进程id,指向可执行文件的指针,栈,静态和动态分配的变量的内存,处理器寄存器。都与地址空间有关,使用很多系统资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值