读<OSTEP>的一点重点记录与感悟 (未完) Chapter-2 第二章 1. 操作系统的设计目标:  抽象.高性能.保护.不间断运行. 抽象:建立一些“抽象”,让操作系统方便和易于使用: 高性能:最小化操作系统的开销 保护:确保一个程序的恶意或意外情况不会损害其他程序: 不间断运行:操作系统必须一直运行,当他失效时,系统上的其他所有运行的程序都会失效: Chapter-4  第四章 1. 进程 非正式定义:进程就是运行中的程序: 正式定义:操作系统为正在运行的程序提供的抽象,就是进程: 对…
问题2#:进程间的切换 直接执行的下一个问题是如何实现进程的切换.进程的切换按理说是挺简单的,对吧?不就是决定哪一个进程应该停止,哪一进程应该开始而已,才多大点事情啊?但,事实上这还真的有点棘手:尤其当一个进程在CPU运行的时候,就意味着操作系统(OS)是是没有执行的(OS程序此时是没有使用CPU的).那么,问题来了,如果操作系统(OS)没有在CPU运行,那么它究竟是如何完成这些事情的?(看上去,理论上是无法做任何事情的)尽管这听起来就像个哲学问题,但显然:当操作系统(OS)不运行在CPU上时,…
总结 我们讨论了实现CPU虚拟化的部分底层机制,及我们统称为直接执行(direct execution)的一组技术.基本的思想十分简单明了:直接在CPU上运行你想运行的代码,但是你先得确保将硬件设置好以便在没有操作系统的协助下去限制进程能做的事. 这些通用的方法也在真实生活中被运用.比如:你们中的有孩子的部分人,或者,总该听说过儿童吧,也许对婴儿防护室:一间将危险物品锁在柜中,插座被掩盖住的房间.在这样准备的房间中,你可以让你的孩子自由的玩耍,因为你明白房间中绝多数的潜在危险都被限制了. 以类似…
进程   进程模型     进程就是一个正在执行的程序的实例  值得注意的是,若一个程序运行了两遍,则算作两个进程 创建进程 在通用系统中,有四种主要事件导致进程的创建 ①系统的初始化 ②执行了 正在运行的进程 所调用的 进城创建系统调用 ③用户请求创建一个新进程 ④一个批处理作业的初始化  进程的状态 运行态(该时刻进程实际占用CPU) 就绪态(可运行,但因为其他进程正在运行而暂时停止) 阻塞态(除非某种外部事件发生,否则进程不能运行) 在Operating Systems Concept中还…
操作系统Operating Systems进程同步与信号量Processes Synchronization and Semaphore 进程合作:多进程共同完成一个任务 从纸上到实际:生产者− − 消费者实例 共享数据 #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = out = counter = 0; 注意:这些都是用户态程序! 生产者进程 while (true…
https://www.cmrr.umn.edu/~strupp/serial.html#CONTENTS Introduction Chapter 1, Basics of Serial Communications What Are Serial Communications? What Is RS-232? Signal Definitions Asynchronous Communications What Are Full Duplex and Half Duplex? Flow Co…
EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInstance; public static EventBus getDefault() { if (defaultInstance == null) { synchronized (EventBus.class) { if (defaultInstance == null) { defaultInsta…
操作系统Operating Systems信号量的代码实现Coding Semaphore &死锁处理Deadlock 可以操刀了—从纸上到实际 从Linux 0.11 那里学点东西… 读磁盘块 bread(int dev,int block){ struct buffer_head * bh; ll_rw_block(READ,bh); wait_on_buffer(bh); 启动磁盘读以后睡眠,等待磁盘读完由磁盘中断将其唤醒,也是一种同步 lock_buffer(buffer_head*bh…
开始核心级线程 内核级线程对多核的支持怎么样? 和用户级相比,核心级线程有什么不同? ThreadCreate 是系统调用,内核管理TCB ,内核负责切换线程 如何让切换成型? − − 内核栈,TCB 用户栈是否还要用? 执行的代码仍然在用户态,还要进行函数调用 一个栈到一套栈:两个栈到两套栈 TCB 关联内核栈,那用户栈怎么办? 用户栈和内核栈之间的关联 所有中断( 时钟.外设.INT指令) 都引起上述切换 中断( 硬件) 又一次帮助了操作系统… 仍然是那个A() ,B() ,C() ,D()…
Elasticsearch6.3.2启动过程源码阅读记录 网上有很多关于es的源码分析,觉得自己技术深度还不够,所以这些文章只是看源码过程中的一个笔记,谈不上分析. 整个启动过程以类名.方法名,按顺序依次描述如下: Elasticsearch.main启动入口类,注册JVM关闭钩子用来清理资源. Command.mainwithoutErrorHandling 在es正式启动之前,加载一些命令:比如 ./elasticsearch -help命令 starts elasticsearch Opt…