cpu和内存之间通过地址总线.数据总线.控制总线连接.外部总线连接外部设备.下图有问题,内存和外设没有直接连接.同一组总线,CPU和内存连接的时候硬盘就不能和内存连接,否则有冲突,core和core之间也有冲突,软件层实现. 应用软件无法直接访问硬件设备,都要通过操作系统,也就是通过system call. dos具备多程序,不具备多任务. 内核态和用户态设计的基本思想是让操作系统免受用户干扰(黑客控制系统),在硬件层解决掉这个问题,内核态用户是无法访问的. 也就是说用户一般是通过系统程序来实现…
image含各种段. 有些不需要的页可能永远不需要装入内存,可能只有百分之70-80是异常情况采用的,这种代码就可以放入硬盘. 抖动实际就是进程数太多导致内存不够用造成的. 页面换入换出在内存和磁盘之间是有cache的,cache在内存里,减少了磁盘操作. free命令分析.…
所有程序都有CPU和io这两部分,即使没有用户输入也有输出. CPU最好特别忙,io空闲无所谓. 程序/数据/状态 三个维度来看进程. 等待的资源可能是io资源或者通信资源(别的进程的答复). 一个进程对应一个PCB,进程消亡,pcb也消亡.pcb驻留在内存,要把尽量少的放到pcb里面,不然占用大量空间. 操作系统的管理就是把pcb在各个队列移来移去. jjob queue还不是进程,希望执行但是还没装入内存执行. 进程都希望把变量放到寄存器里面,进程运行一定会用到寄存器,把一些关键的,使用频繁…
i386先通过段是管理,在通过页是管理…
生产者进程count++是它的临界区,消费者count--是它的临界区. 经典同步问题,死锁问题,略.…
不只上面的四种,比如时间片到了也会引起调度. 具体的调度算法: fcfs简单,但是波动很大. 最高相应比算法,执行时间最长就应该等待的长点,比sjf多了一个等待时间的考虑. 硬件定时器和软件计数器共同实现,定时到了把计数器减1,减到0表示时间片到了. 任何进程的等待时间是有上限的 (n-1)q,能保证响应时间. 时间片到了,会回到等待队列的末尾. 轮转法时间片长短选择很重要,太小会导致大量的上下文切换,太少的话无法体现轮转法响应快的特点. 多层反馈队列无法评判对错,看是否满足需求. 实际中Lin…
在反射的时候如果去掉了安全性检测机制,能够大大的提高反射的执行效率,我们来看下面的代码进行比较 package com.bjsxt.test; import java.lang.reflect.Method; import com.bjsxt.test.bean.User; /** * 通过跳过安全检查,提高反射效率 * 三种执行方法的效率差异比较 * * @author 尚学堂高淇 www.sxt.cn * */ public class Demo06 { public static void…
<?php /*  mongodb_查询操作使用_条件查询.where子句等(转并学习)   1.find()/findOne() mongodb数据库的查询操作即使用find()或者findOne()函数,也可根据不同的条件进行查询.查询的写法(以find()为例)可以如下: db.A.find()/db.A.find({})   "{}"是否省略不影响查询,都表示查找集合A下的所有文档.也可以以文档做条件:db.A.find({"a":1,"b&…
内核态与用户态(为什么存在这种机制.程序应处于哪个状态.如何判断当前所处状态.哪些功能需要内核态.如何实现这种机制) 1.首先我们应该思考清楚为什么会有内核态和用户态?(为什么存在这种机制) 因为计算机的资源是有限的, 所以不可能让每个程序都能访问所有资源, 有的程序能访问任何资源, 有的则不能.就如人类社会中的社会地位一样, 越是社会地位高的人, 拥有的资源越多.所以运行于内核态的程序必须要有十分可靠的安全性, 不然随便修改了OS的内核数据结构, 就会造成系统的崩溃.而处于用户态的程序, 最多…
五大类型操作系统 (1). 批处理操作系统 用户脱机使用计算机 用户提交作业之后直到获得结果之前就不再和计算机打交道. 作业提交的方式可以是直接交给计算中心的管理操作员,也可以是通过远程通讯线路提交. 提交的作业由系统外存收容成为后备作业. 成批处理 操作员把用户提交的作业分批进行处理 每批中的作业将由操作系统或监督程序负责作业间自动调度执行. 多道程序运行 按多道程序设计的调度原则, 从一批后背作业中选取多道作业调入内存并组织它们运行, 成为多道批处理. (2). 分时操作系统 (Linux,…