You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CodePattern/B 高性能模式/02 操作系统相关知识.md

2.6 KiB

内存管理

段:存放的是全局变量和静态变量 栈:系统自动分配释放,函数参数值,局部变量,返回地址等在此 堆:存放动态分配的数据,由开发人员自行管理

不同操作系统进程和线程实现机制有不同。

虚拟内存技术,把进程虚拟地址空间划分成用户空间和内核空间。 在 32 位的操作系统中4GB 的进程地址中用户空间为 03G内核地址空间为 34G 用户不能直接操作内核地址,只有通过系统调用的方式访问。

线程共享虚拟内存和全局变量等资源,线程拥有自己的私有数据比如栈和寄存器。

多任务

多任务就是操作系统可以同时运行多个任务。分为并行和并发两种。 并行是真在不同CPU核上同时执行并发是轮换在一个核上执行。

阻塞/非阻塞

等候消息的过程中能不能干其他事

同步/异步

指的是消息通知的机制 通知调用者的三种方式,如下 状态:即监听被调用者的状态,调用者每隔一段时间检查一次是否完成(轮询)。 通知:当被调用者执行完成后,发出通知告知调用者。 回调:当被调用者执行完成后,调用调用者提供的回调函数 。

进程、线程

运行一个软件就是开了一个进程 比如,一个游戏启动后为一个进程 但一个游戏需要图形渲染,联网操作能同时运行 所以将其各个部分设计为线程 即一个进程有多个线程

从操作系统层面而言 进程是分配资源的基本单位 进程之间是独立的 一个进程无法访问另一个进程的空间 一个进程运行的失败也不会影响其他进程的运行

因为操作系统可以切换进程,所以看起来同时运行的进程数会超过核数 当需要创建的子进程数量巨大时,可以创建进程池 进程间常通过消息队列程序实现数据传递

一个进程内可以包含多个线程 线程是程序执行的基本单位 线程是操作系统分配处理器时间的基本单元 线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉

一个进程下的多个线程可以共享该进程的资源,包括内存。 多个线程同时对同一个全局变量操作,会出现竞争问题,从而数据结果会不正确 同步控制。某个线程要更改数据时,先将其锁定,直到将状态变成“非锁定”,其他的线程才能锁该资源。 如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。 可以用一些机制解决死锁,比如超时。