操作系统
为你挡风遮雨
这个作者很懒,什么都没留下…
展开
-
简述进程变为僵尸进程的过程以及预防措施
简述进程变为僵尸进程的过程以及预防措施当一个父进程以fork()系统调用建立一个新的子进程后,核心进程就会在进程表中给这个子进程分配一个进入点,然后将相关信息存储在该进入点所对应的进程表内。这些信息中有一项是其父进程的识别码。而当这个子进程结束的时候(比如调用exit命令或者main函数return返回值结束),其实他并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit的作用是使进程退出,但是也仅仅限于一个正常的进程变成了一个僵尸进程,并不能完全将其销毁)。预防措施:原创 2021-07-23 14:19:19 · 365 阅读 · 0 评论 -
在执行malloc申请内存的时候,操作系统是怎么做的
执行malloc动态申请内存时,操作系统的做法从操作系统层面上看,malloc是通过两个系统调用来实现的: brk和mmapbrk是将进程数据段(.data)的最高地址指针向高处移动,这一步可以扩大进程在运行时的堆大小。mmap是在进程的虚拟地址空间中寻找一块空闲的虚拟内存,这一步可以获得一块可以操作的堆内存。通常,分配的内存小于128k时,使用brk调用来获得虚拟内存,大于128k时就使用mmap来获得虚拟内存。进程先通过这两个系统调用获取或者扩大进程的虚拟内存,获得相应的虚拟地址,在访问这些原创 2021-07-06 22:34:06 · 968 阅读 · 0 评论 -
关于死锁的总结
死锁的概念各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进。死锁、饥饿、死循环的区别死锁至少是两个进程一起死锁,死锁进程处于阻塞态。饥饿可以是只有一个进程饥饿,饥饿进程可能阻塞也可能就绪死循环可能只有一个进程发生死循环,死循环的进程可上处理机。死锁和饥饿是操作系统要解决的问题,死循环是程序员要解决的。死锁产生的必要条件互斥条件对必须互斥使用的资源的争抢才会导致死锁。不可剥夺条件进程保持的资源只能主动释放,不可强行剥夺。请求和保持条件保持着某些资源不放的同时,请原创 2021-07-06 21:50:15 · 260 阅读 · 0 评论 -
Linux系统下进程间通信方式
进程间的各种通信方式1、无名管道(pipe):允许一个进程和另一个与它有共同祖先的进程(具有亲缘关系的进程)之间进行通信。特点:是一种特殊的文件,只存在于内存中;只能用于具有亲缘关系的进程间的通信;只能由一端向另一端发送数据,是半双工方式,如果双方需要同时收发数据需要两个管道。2、有名管道(FIFO):类似于管道,但是它可以用于任何两个进程之间的通信,有名管道在文件系统中有对应的文件名,命名管道通过命令mkfifo或系统调用mkfifo来创建。特点:是FIFO文件,存在于文件系统中,可以通过文件路径名原创 2021-07-05 17:03:19 · 274 阅读 · 0 评论