![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 69
ALITAAAA
这个作者很懒,什么都没留下…
展开
-
Linux内存管理
虚拟内存和物理内存物理内存就是内存块的物理地址集合,来访问已经位置固定的内存区域。虚拟内存是为了解决物理内存地址暴露给进程的一种机制,通过虚拟内存映射来访问物理内存,从而达到保护物理内存的安全以及提高访问内存的效率。虚拟内存支持程序访问比物理内存大得多的内存空间,这个功能依靠磁盘+RAM来实现,因为磁盘空间相对于RAM来说价格更低廉,存储空间大,所以虚拟内存并不是真正意义的内存,而是一种虚拟的映射关系。页,页框,页面虚拟内存块通常被分割成页,页的大小通常在32位的系统下被分成4KB,页是内存管理的基本原创 2021-07-30 20:46:01 · 185 阅读 · 0 评论 -
两种高效的服务器并发模式
高并发的目的就是提高CPU的使用率,使得程序可以“同时”执行多个任务。一旦程序中发生阻塞,则其他程序能立即执行,不会阻塞从而降低CPU的使用率。不过对于计算密集型的程序,高并发编程反而没有优势,因为任务的切换降低了效率。但是如果是I/O密集型,经常读写文件、访问数据库等等,I/O操作的熟读远没有CPU计算速度快,所以会显著降低了CPU的执行效率。并发模式指的是I/O处理单元和多个逻辑单元协调完成任务的方法。有两种方法:半同步/半异步模式 和 领导者/追随者 模式。半同步/半异步模式这里的同步指的是程原创 2021-03-31 16:28:12 · 231 阅读 · 0 评论 -
TCP/IP三次握手四次挥手过程
TCP报文的头部结构TCP头部信息出现在TCP报文段中,目的是指定源端端口、目的端端口、管理TCP链接等等。TCP的头部结构如图所示:其中16位端口号就是指定通信端口的,分别指定源端口号和目的端口号。而32位的序号也就是SEQ来表示每次传输方向里字节流中每个字节的编号。通常这个值是某一个随机值。32位的确认号ACK是用来对发送来的TCP报文段进行响应。通常ACK=SEQ+1。4位的头部信息用来标识TCP报文信息。6个标志位中,ACK,RST,SYN,FIN此四个最常用,分别表示确认号是否有效,让对方从原创 2021-03-31 14:30:55 · 101 阅读 · 0 评论 -
linux储存管理
linux系统使用的是地址空间的概念来管理内存数据。如果把物理地址暴露给进程会带来几个问题:1.非法程序可能会破坏操作系统。2.很难实现并发。所以引入了地址空间的概念:地址空间是一个进程可用于寻址内存的一套地址集合。简单来说,地址空间为进程创造了一种抽象的内存。每个进程都有自己的地址空间,并且这个地址空间独立于其他进程的寻址空间。要保证多个应用程序同时处于内存中并且互相不影响,需要解决两个问题:保护和重定位。解决内存超载有两种处理内存超载的方法:1.最简单的测略就是交换技术:一个进程先在内存原创 2021-03-26 10:50:55 · 106 阅读 · 0 评论 -
三种线程同步机制----信号量、互斥量、条件变量
跟多进程一样,多线程程序也得考虑同步的问题。信号量常见的信号量函数有以下五个:sem_init函数用来初始化 一个未命名的信号量。pshard如果是0,则只能在当前线程使用,否则可以在多线程之间共享。value制定信号量的初始值。sem_destroy用来销毁信号量,以释放占用的内核资源。sem_wait函数以原子操作将信号量的值减1.如果减为0,则sem_wait会被阻塞住,直到非0.sem_trywait是非阻塞版本,不管value是不是0,都会立即返回。非0时,则会执行value减一操作。原创 2020-12-07 15:38:50 · 410 阅读 · 0 评论 -
僵死进程
僵死进程的概念一个已经终止、但是其父进程尚未获取到终止紫禁城的有关信息、释放子进程占用的资源的进程被称之为僵死进程,简单来讲,子进程结束了,但是父进程尚未读取其退出状态,该子进程处于僵死态。 当父进程结束或者异常终止的时候,子进程尚未结束,此时子进程被init进程接管,init为此子进程的父进程,等待子进程结束。在父进程推出之后,子进程退出之前,此子进程处于僵死态。wait及waitpid函数处理僵死进程每当一个子进程结束的时候,则父进程调用wait或者waitpid来获取子进程的终止状态。父进程也原创 2020-11-15 12:13:52 · 151 阅读 · 0 评论 -
简单理解fork
fork的函数原型一个现存进程调用fork函数是UNIX内核创建一个新进程的唯一方法。通过fork创建的新进程被称作为子进程。 fork函数被调用一次,但是返回两次。其中子进程的返回值是0,而父进程的返回值则是新创建的子进程的进程PID。 将子进程的pid作为父进程的返回值的原因是:一个进程的子进程有多个,没有一个函数使一个进程可以获得所有的子进程的pid。fork之后子进程的fork函数返回值是0的原因:一个进程智能有一个父进程,所以子进程总是可以调用getpid来获取父进程的进程id,所以子进程的原创 2020-11-15 10:54:26 · 1814 阅读 · 0 评论 -
进程间通信
进程间通信的方式进程间通信 IPC(Inter-process communication)。在操作系统中,每一个进程都是独立的执行体。但是在有些时候,进程之间又需要相互交互,所以就有了进程间通讯,Linux下进程间的通讯方式有: 信号、管道(有名、无名)、信号量、消息队列、共享内存、socket等。信号当我们使用了多线程来编写代码的时候,程序中总是存在一部分临界代码,我们需要确保只有一个进程或者执行线程可以进入这个临界代码并且对这块资源拥有独占式的访问权。临界资源:同一个时刻只允许一个进程或者执行原创 2020-11-01 16:40:21 · 117 阅读 · 0 评论