![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
hyy_0224
这个作者很懒,什么都没留下…
展开
-
2021-11-4 进程间通信方式
1、匿名管道管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。// 需要的头文件#include <unistd.h>// 通过pipe()函数来创建匿名管道// 返回值:成功返回0,失败返回-1// fd参数返回两个文件描述符// fd[0]指向管道的读端,fd[1]指向管道的写端// fd[1]的输出是fd[0]的输入。int pipe (int fd[2]);2、有名管道有名管道也是半双工的通信方原创 2021-11-04 11:13:55 · 77 阅读 · 0 评论 -
2021-11-4 堆和栈的区别
1、首先回顾C++的内存从高地址到低地址分别是栈区、堆区、全局区、常量区、代码区2、堆栈的区别(1)申请方式不同栈空间由系统自动分配,只要剩余空间大于申请空间,系统就会为程序分配内存。否则提示栈溢出。堆空间由程序员主动申请。操作系统有一个记录空间地址的链表。当系统收到程序申请时,首先遍历链表,寻找第一个空间大于所申请内存的堆结点,然后将该节点从空闲结点链表中删除,并将堆内存分配给程序。(2)申请大小限制不同栈空间由高地址向低地址扩展,其内存连续。堆空间是不连续的,堆的大小受限于计算机系统中有原创 2021-11-04 04:24:13 · 156 阅读 · 0 评论 -
2021-11-3 内核态和核心态
1、什么是内核态?当一个进程进行系统调用而陷入内核代码中时,就称程序陷入了内核态。否则就是用户态。用户程序运行在用户态而操作系统运行在内核态。用户态只能执行非特权指令,而内核态可以执行全部指令。内核态可以执行的指令比如:执行I/O,设置时钟,内存清零等。用户态有三种方式可以进入到内核态,分别是系统调用、异常、以及外围设备的中断。2、什么时候内核态切换到用户态?系统调用:创建进程/线程、切换进程/线程异常:程序在运行中遇到了异常,这时需要切入到操作系统内核态中处理异常。异常类型比如缺页中断。缺页中断是原创 2021-11-03 19:35:30 · 1557 阅读 · 0 评论 -
2021-10-26 常见的线程的同步机制
1、互斥量2、临界区临界区指一个可以被公共访问,但每次指允许一个线程访问的程序片断。3、信号量资源数等于最大线程访问数,以此控制访问资源的线程数量。4、条件变量等待条件成立才可访问资源...原创 2021-10-26 15:19:38 · 44 阅读 · 0 评论 -
2021-10-26 操作系统为什么要分页
1、什么是物理地址就是内存条啦!2、为什么不直接使用物理地址?(1)直接使用物理地址意味着程序可以直接访问物理地址,这样如果误操作访问并修改了操作系统的相关内存,就造成了系统破坏。(2)系统有多个进程在运行时互相之间可以直接访问物理地址,直接导致结果奇奇怪怪,肯定也是不安全的。3、为什么使用地址空间?使用地址空间可以解决上述问题。但也还有新的问题,比如单纯使用地址空间+空间界限,当程序超出该内存块大小时,将无法自适应,需要新的技术,常见的有覆盖和交换。覆盖使内存空间中留下那些必须的指令,而交换是原创 2021-10-26 15:06:07 · 570 阅读 · 1 评论 -
2021-10-26 进程间通信——内存映射机制
内存映射与常规文件操作的区别是:常规文件操作需要从磁盘到页缓存再到用户主存的两次数据拷贝。而mmap操控文件,只需要从磁盘到用户主存的一次数据拷贝过程。分段和分页的区别:分页和分段存储管理有何区别?答:主要区别表现在以下三个方面:(1) 页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。(2) 页的大小固定且由系统决定;而段的长度却不固定,决定于用户所编写的程序。(3原创 2021-10-26 13:31:54 · 88 阅读 · 0 评论 -
2021-10-23 进程概念
程序和进程程序中包含了一系列信息,这些信息用来指导操作系统如何在运行时创建一个进程。进程是正在运行的程序的实例。进程是操作系统最基本的资源分配单元,也是基本的执行单元。单道程序设计和多道程序设计单道程序设计即计算机内存中只允许一道程序运行。多道程序设计是指计算机内存中同时存放多道相互独立的程序。这些程序在管理程序控制下,穿插运行。对于单个CPU来说,程序在CPU上轮流运行。时间片指操作系统给多道正在运行的程序,即进程的分配的一段CPU运行时间。时间片由操作系统的内核调度分配给进程。并行和.原创 2021-10-23 17:45:05 · 492 阅读 · 0 评论 -
2021-10-23 进程创建、退出、僵尸进程、孤儿进程
进程创建 使用fork()函数创建子进程,返回值为pid_t,其实就是int#include<sys/types.h>#include<unistd.h>#include<stdio.h>int main(){ pid_t pid=fork();//创建子进程,在父进程中返回子进程ID,在子进程中返回0,返回-1表示子进程创建失败 pritf("%d %d ",getpid(),getppid());//返回pid ppid return 0;}原创 2021-10-24 00:36:23 · 213 阅读 · 0 评论 -
2021-10-24 进程间通信——匿名管道
进程间资源独立,互相不能访问。所以需要进程间通信。进程间通信目的分为:数据传输、时间通知、资源共享、进程控制。1、 管道管道是内核内存中的缓冲器。管道拥有文件特质:读、写操作。字节序读写端相同。工作方式半双工。匿名管道只能在有亲缘关系的进程间使用。(父子、兄弟等)因为父子进程共享文件描述符表。管道的数据结构是环形队列。...原创 2021-10-24 02:15:22 · 96 阅读 · 0 评论