操作系统
文章平均质量分 75
燕然一勒
学技以傍身,然后可立足也
展开
-
Linux命令 查看端口占用情况
netstat-a (all)显示所有选项,netstat默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。(重要)-l 仅列出有在 Listen (监听) 的服务状态-p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计 (重要)-c 每隔一个固定时间,执行该netstat命令。原创 2021-02-16 16:05:11 · 377 阅读 · 0 评论 -
Linux进程管理
进程终止进程终止分为两步进程自己执行退出操作exit,释放占用的部分系统资源,之后向父进程发送退出信号,报告自己已经退出; 父进程相应子进程的进程退出信号,执行回收操作wait,找到已经退出的子进程,回收其中的统计信息,释放其进程控制块和系统堆栈,从而将进程彻底销毁。系统调用wait()作用:回收已经退出的进程详细功能:父进程一旦调用了wait就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经退出的子进程,wait就会收集这个子进程的信息,并把原创 2021-02-13 23:38:50 · 91 阅读 · 0 评论 -
条件变量和互斥锁
1. 原文章:条件变量中互斥锁的作用一直都有一个问题,就是条件变量为什么要和互斥锁一起使用,今天看了一篇文章,并结合APUE这本书,知道了其中的原因。函数pthread_cond_wait()有几步操作:1。判断条件2.如果条件满足,继续执行;如果条件不满足,就将线程挂到条件变量的等待线程队列中。如果不加锁的话,这两步之间就可能存在时间窗口,也就是(1)当线程1判断条件不满足,(2)然后准备把线程挂起的时候,线程2改变了条件,(3)接着线程1挂在了条件变量的等待队列上,这样就可能死锁。如果加上锁原创 2021-01-06 17:20:00 · 1356 阅读 · 0 评论 -
操作系统之虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 ——维基百科为什么要使用虚拟内存安全:如何用户程序可以直接访问物理内存,会造成安全问题。虚拟内存技术使得同时驻留在内存的多个用户进程相互之间不会发生干扰,也不会访问操作系统所占有的空间。 扩大程序的地址空间:利用虚拟存储技术,从逻辑上对内存空间进行扩充,从而可以使用户在较小的内存里运行较..原创 2021-01-05 22:18:40 · 907 阅读 · 0 评论 -
操作系统之进程调度
衡量调度算法的指标主要有两个周转时间= 完成时间−到达时间 响应时间= 首次运行时间−到达时间1. 先到先服务(First Come First Served,FCFS)按照到达的顺序执行,也被称为先进先出(First In First Out,FIFO)调度优点:简单,而且易于实现缺点:会出现护航效应,一些耗时较少的资源消费者被排在重量级的资源消费者之后。这个调度方案可能让你想起在杂货店只有一个排队队伍的时候,如果看到前面的人装满3辆购物车食品,你感觉如何?这会等很长时间。2.原创 2021-01-04 17:48:14 · 386 阅读 · 0 评论 -
操作系统之上下文切换
系统调用的过程发生CPU 上下文的切换CPU 寄存器里原来用户态的指令位置,需要先保存起来。接着,为了执行内核态代码,CPU 寄存器需要更新为内核态指令的新位置。最后才是跳转到内核态运行内核任务。而系统调用结束后,CPU 寄存器需要恢复原来用户保存的状态,然后再切换到用户空间,继续运行进程。所以,一次系统调用的过程,其实是发生了两次 CPU 上下文切换。不过,需要注意的是,系统调用过程中,并不会涉及到虚拟内存等进程用户态的资源,也不会切换进程。这跟我们通常所说的进程上下文切换是不一样的:进程上下文切原创 2021-01-04 16:18:56 · 2262 阅读 · 0 评论 -
关于操作系统I/O的一些基础知识
内容来自书籍《操作系统导论》1. 操作系统是如何与设备交互的首先看一下典型系统的架构,如图。其中,CPU通过某种内存总线(memory bus)连接到系统内存。图像或者其他高性能I/O设备通过常规的I/O总线(I/O bus)连接到系统。最后,更下面是外围总线,外围总线将最慢的设备连接到系统,包括磁盘、鼠标及其他类似设备。对于操作系统来说,它要连接设备,并控制设备。对于设备来说,一方面它要有具体的机制实现自己的功能(比如打印机要实现本身打印的功能),另一方面它要提供接口供操作系统调用(不然无原创 2021-01-03 20:09:32 · 1016 阅读 · 0 评论 -
进程、线程、协程
1. 进程进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等),进程是资源分配的最小单位。2. 线程线程,有时被称为轻量级进程(Lightweight Process,LWP),是操作系统调度(CPU调度)执行的最小单位。3. 进程和线程的区别和联系拥有资源:进程是资源分配的基本单位,进程中至少一个线程,它们共享该进程的资源。进程的资源包括地址空间,打开原创 2021-01-03 11:24:24 · 114 阅读 · 0 评论 -
基础知识之什么是I/O
本文内容来之书籍《Netty 4核心原理与手写RPC框架实战》1. 什么是I/O我们都知道在UNIX世界里一切皆文件,而文件是什么呢?文件就是一串二进制流而已,其实不管是Socket,还是FIFO(First Input First Output,先进先出队列))、管道、终端。对计算机来说,一切都是文件,一切都是流。在信息交换的过程中,计算机都是对这些流进行数据的收发操作,简称为I/O操作(Input andOutput),包括往流中读出数据、系统调用Read、写入数据、系统调用Write。不过计算转载 2021-01-02 22:05:19 · 5647 阅读 · 0 评论 -
操作系统 关于死锁的面试题
进程/线程死锁的原因、条件、如何防止死锁。1. 进程/线程死锁的原因:竞争资源(不可抢占资源,可消耗性资源) 进程/线程推进顺序非法2、进程/线程死锁的四个必要条件(只要有一个不成立,就不会发生死锁)互斥条件:在一段时间内,某资源只能被一个进程占用 请求和保持条件:进程已保持了资源,又提出了新的资源请求,而该资源已被其他进程占有,此时该进程阻塞,但不释放已持有的资源 不可抢占条件:进程已经获得的资源,在未使用完之前不能被抢占,只能等该进程使用完后自己释放 循环等待条件:发生死锁时,存在原创 2020-12-23 09:58:32 · 389 阅读 · 0 评论 -
用户态和内核态切换
1. 切换方式从用户态到内核态切换可以通过三种方式,或者说会导致从用户态切换到内核态的操作:系统调用,这个上面已经讲解过了,在我公众号之前的文章也有讲解过。其实系统调用本身就是中断,但是软件中断,跟硬中断不同。系统调用机制是使用了操作系统为用户特别开放的一个中断来实现,如 Linux 的 int 80h 中断。 异常:如果当前进程运行在用户态,如果这个时候发生了异常事件,会触发由当前运行进程切换到处理此异常的内核相关进程中 外围设备中断:外围设备完成用户请求的操作之后,会向CPU发出中断信号,这原创 2020-12-22 21:30:27 · 11953 阅读 · 0 评论 -
为什么线程切换开销大
1. Unix/Linux的体系架构从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件,它控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用。系统调用是操作系统的最小功能单位,每个系统调用都会实现一个简单的操作。在应用程序中可以调用所需的系统调用来完成任原创 2020-12-22 17:01:49 · 4671 阅读 · 0 评论 -
多线程(what,why,when)
1. 什么是多线程多线程是指在一个进程中包含多个并发执行的线程,这些执行不同的任务,互相协作共同完成进程的任务目标。2. 为什么要使用多线程在一个程序的执行过程中有许多耗时的操作,如磁盘IO、数据库的读写等。如果使用单线程就必须等待这些操作执行完才能去执行其他的操作,在等待的过程中CPU是空闲的。使用多线程可以将耗时操作放在后台继续执行的同时,执行其他操作,这样就可以提高CPU等资源的利用率,提高系统的吞吐量。3. 使用多线程带来了什么坏处对多线程的管理需要额外的CPU开销,线程的切换也原创 2020-12-22 10:36:47 · 125 阅读 · 0 评论 -
面试题:进程间通信方式,线程间通信方式
一、进程间通信(IPC,Inter-Process Communication)是指在不同进程间传播或交换信息1. 无名管道特点半双工(数据流向仅有一个方向),具有固定的读端和写端 只能用于父进程或兄弟线程之间通信(具有血缘关系的线程之间) 一种特殊文件,可以用普通的read、write函数进行读写,但又不是普通文件,不属于任何其它文件系统,仅存在于内存之中 通信的数据是无格式的流并且大小受限2. 命名管道(先进先出队列)特点不同于无名管道之处在于它提供一个与之关联的路径名,以F原创 2020-12-21 22:40:53 · 4927 阅读 · 1 评论 -
操作系统之线程同步
1. 概述一个进程中的多个线程运行时要解决两个重要问题线程之间如何通信 线程之间如何同步线程不安全的原因有两个多个线程共享资源 多个线程以不恰当的相对顺序执行线程同步的目的就是让多个线程以合理的相对顺序推进,或者互斥,或者协作,以保证结果的正确性。2. 同步的方法2.1 概念解释竞争:多个线程同时进入同一段代码或访问同一个资源的现象。 临界资源:各线程只能以互斥的方式访问的共享资源,称作临界资源 临界区:访问临界资源的那段代码称为临界区。为了保证各线程互斥地访问临界资源,原创 2020-12-21 18:42:21 · 377 阅读 · 0 评论