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

58 lines
2.6 KiB

7 days ago
### 内存管理
段:存放的是全局变量和静态变量
栈:系统自动分配释放,函数参数值,局部变量,返回地址等在此
堆:存放动态分配的数据,由开发人员自行管理
6 days ago
不同操作系统进程和线程实现机制有不同。
7 days ago
虚拟内存技术,把进程虚拟地址空间划分成用户空间和内核空间。
6 days ago
在 32 位的操作系统中4GB 的进程地址中用户空间为 03G内核地址空间为 34G
用户不能直接操作内核地址,只有通过系统调用的方式访问。
7 days ago
线程共享虚拟内存和全局变量等资源,线程拥有自己的私有数据比如栈和寄存器。
6 days ago
## 多任务
多任务就是操作系统可以同时运行多个任务。分为并行和并发两种。
7 days ago
并行是真在不同CPU核上同时执行并发是轮换在一个核上执行。
## 阻塞/非阻塞
等候消息的过程中能不能干其他事
## 同步/异步
指的是消息通知的机制
通知调用者的三种方式,如下
6 days ago
状态:即监听被调用者的状态,调用者每隔一段时间检查一次是否完成(轮询)。
通知:当被调用者执行完成后,发出通知告知调用者。
回调:当被调用者执行完成后,调用调用者提供的回调函数 。
7 days ago
6 days ago
## 进程、线程
7 days ago
运行一个软件就是开了一个进程
6 days ago
比如,一个游戏启动后为一个进程
7 days ago
但一个游戏需要图形渲染,联网操作能同时运行
所以将其各个部分设计为线程
即一个进程有多个线程
从操作系统层面而言
进程是分配资源的基本单位
进程之间是独立的
一个进程无法访问另一个进程的空间
一个进程运行的失败也不会影响其他进程的运行
6 days ago
因为操作系统可以切换进程,所以看起来同时运行的进程数会超过核数
当需要创建的子进程数量巨大时,可以创建进程池
进程间常通过消息队列程序实现数据传递
7 days ago
一个进程内可以包含多个线程
6 days ago
线程是程序执行的基本单位
7 days ago
线程是操作系统分配处理器时间的基本单元
线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉
6 days ago
一个进程下的多个线程可以共享该进程的资源,包括内存。
多个线程同时对同一个全局变量操作,会出现竞争问题,从而数据结果会不正确
同步控制。某个线程要更改数据时,先将其锁定,直到将状态变成“非锁定”,其他的线程才能锁该资源。
7 days ago
如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。
6 days ago
可以用一些机制解决死锁,比如超时。