摘要:
实现C++线程安全的案例模式的三种方式: 局部静态变量 饿汉式初始化 懒汉式初始化 局部静态变量(最常见) 我们知道在一个函数中定义一个静态局部变量,它只会初始化一次,就是在这个函数第一次调用的时候,以后无论调用几次,函数内的局部变量都不再初始化,并且所有对象的静态成员变量都共享同一块静态存储空间。 阅读全文
摘要:
Select 网络模型 1.为什么需要用select网络模型? 为了解决基本C/S模型中,accept()的阻塞的问题。 2. 它和基本的C/S模型有什么区别? 基本C/S模型中,每次处理一个独立的客户端都要单独的线程,这样会导致客户连接数很大时,线程数也会很多。 并且accept()会阻塞一直等待 阅读全文
摘要:
线程的引入 为什么引入线程??? 引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。并且引入线程之后,进程只作为除CPU之外的系统资源的分配单元(像打印机、内存地址空间等都是分配给进程的)。下面第一张图对此做了说明 阅读全文
摘要:
关于进程的讨论 进程的分类 系统进程/用户进程 前台进程/后台进程 CPU密集型进程/ I/O型密集型进程 进程层次结构 UNIX进程家族树:init为根进程,然后向下衍生; Windows:所有进程地位相同 进程地址空间 操作系统给每个进程都分配了一个地址空间 先看一段程序: 同时运行两个Myva 阅读全文
摘要:
进程/线程模型 进程模型 (一)多道程序设计 (Multi programming) 允许多个程序同时进入内存并运行,其目的是为了提高系统效率。 并发环境与并发程序 并发环境:一段时间间隔内,单处理器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的。 并发程序:在并发 阅读全文
摘要:
系统调用 系统调用是什么: 系统调用是用户在编程时调用的操作系统功能。 系统调用的作用: 系统调用是操作系统提供给编程人员的唯一接口;使CPU状态从用户态陷入内核态的唯一途径。 典型系统调用举例:每个操作系统都提供几百种系统调用(进程控制、进程通信、文件使用、目录操作、设备管理、信息维护等)。 系统 阅读全文
摘要:
中断/异常机制 可以说 操作系统是由 “中断驱动”或者“事件驱动”的。 主要作用: 及时处理设备发来的中断请求 可使OS捕获用户程序提出的服务请求 防止用户程序执行过程中的破坏性活动 ......... 概念 CPU对系统发生的某个事件做出的一种反应。CPU暂停正在执行的程序,保留现场后自动转去执行 阅读全文
摘要:
处理器的状态(模式MODE) 现代处理器通常将CPU状态设计 划分为两种,三种或四种 CPU时而运行操作系统,时而运行用户态,那CPU如何知道该运行什么呢 比如在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态 特权指令和非特权指令 1. 操作系统只需要 阅读全文
摘要:
操作系统的主要特征 OS特征 -- 并发 并发(concurrency):指处理多个同时性活动的能力。 由于并发将会引发很多的问题:活动切换,保护,相互依赖的活动间的同步。 注意与并行(parallel)区分:与并发类似,但多指不同程序同时在多个硬件部件上执行。 OS特征 -- 共享 共享(shar 阅读全文
摘要:
4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 1 #pragma once 2 #include <iostream> 3 #include <string> 4 using namespace std; 5 //加号运算符重载 6 //1. 成员函数重载 7 class Pe 阅读全文