操作系统
白帽子hhh
这个作者很懒,什么都没留下…
展开
-
关于进程调度算法
什么是进程调度?当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择下一个要运行的进程。完成这种选择工作的这一部分称为调度程序,该程序使用的算法称为调度算法。尽管有一些不同,但许多适用于进程调度的处理方法也同样适用于线程调度。当内核管理线程的时候,调度经常是按线程级别的,与线程所属的进程基本或根...原创 2019-05-14 14:45:43 · 852 阅读 · 0 评论 -
避免死锁--银行家算法
银行家算法是一种用来避免操作系统死锁出现的有效算法,所以在引入银行家算法的解释之前,有必要简单介绍下死锁的概念。死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁的发生必须具备以下四个必要条件:1)互斥条件:指进程对所分...原创 2019-05-18 17:18:07 · 1263 阅读 · 0 评论 -
线程池
1.什么是线程池?提前创建好的一些线程+任务队列2.线程池作用?(1)重复利用已创建好的线程,减少线程创建、销毁的消耗(2)有效控制最大并发的线程数,有效利用资源的同时又避免了资源过度竞争3.线程池种类?(1)newCachedThreadPool:线程数量没有上限,当有新任务到来插入到同步任务队列,在池中寻找可用线程来执行,若有可以线程则执行,若没有可用线...原创 2019-05-28 16:08:36 · 116 阅读 · 0 评论 -
各种锁以及使用场景
(1)互斥锁一次只能一个线程拥有互斥锁,其他线程只有等待。互斥锁是在抢锁失败的情况下主动放弃CPU进入睡眠状态直到锁的状态改变时再唤醒,互斥锁在加锁操作时涉及上下文的切换。(2)自旋锁在任何时刻同样只能有一个线程访问对象。但是当获取锁操作失败时,不会进入睡眠,而是会在原地自旋,直到锁被释放。这样节省了线程从睡眠状态到被唤醒期间的消耗,在加锁时间短暂的环境下会极大的提高效率。但如果加锁时...原创 2019-05-28 16:54:24 · 3838 阅读 · 0 评论 -
页面置换算法
在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。页面置换算法种类:(1)FIFO -- 先进先出思路:选择在内存驻留时间最长的页面进行置换 实现:维护一个记录所有...原创 2019-06-01 19:30:01 · 274 阅读 · 0 评论 -
Linux文件系统中的inode节点详细介绍
理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 b...原创 2019-06-04 16:30:27 · 3098 阅读 · 1 评论 -
malloc底层实现
1.结论2.背景3.分配原理4.具体情况 (1)malloc()小于128k的内存时,使用brk系统调用在堆上申请内存 (2)malloc()大于128k的内存时,使用mmap系统调用在栈与堆之间的映射区分配内存1.结论:1)当开辟的空间小于 128K 时,调用 brk()函数,malloc 的底层实现是系统调用函数 brk(),其主要移动指针 _e...原创 2019-06-22 19:39:31 · 280 阅读 · 0 评论 -
http请求方法:get和post区别
get请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的GET 请求可被缓存GET 请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求不应在处理敏感数据时使用GET 请求有长度限制 ,大多数浏览器通常都会限制url长度在2K个字节GET 请求只应当用于取回数据只接受ASCII字符的参数的数据类型get效率高post查询字符串(名称/值对...原创 2019-09-01 10:40:06 · 161 阅读 · 0 评论