操作系统
文章平均质量分 81
m旧裤子
热爱生活,热爱编程
展开
-
【Linux】Shell编程入门
Shell是一个命令行解释器,它接收用户命令/应用程序,然后调用操作系统内核。Shell还是一个功能强大的编程语言,易编写、易调试和灵活性强等特点。Shell 编程其它脚本语言一样,有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。Bourne Shell(/usr/bin/sh或/bin/sh)学习和工作中一般使用的bash比较多,本文也重在bash上,也就是Bourne Again Shell。$HOME、 $PWD、 $SHELL、 $USER等/root/root。原创 2024-09-17 18:26:47 · 597 阅读 · 0 评论 -
【Linux】nohup命令使用
运行这条命令如果会忽略输入且将命令运行结果输出到当前目录下的nohup.out日志下。且运行当前命令会占用当前终端直到命令运行结束终端才能接受其它输入。的运行结果会重定向到test.log中,包括标准输出(stdout)和错误输出(stderr)。,代表命令会不挂断的在后台运行,后台会有该命令运行进程号并且终端可以接受其它输入。译为不挂起,用于在Linux中不挂断的运行命令,终端退出也不会影响。:让命令在后台运行,退出终端后,后台依然运行。配合使用不挂断的运行命令在Linux后台。这条命令比上条命令多了。原创 2024-08-11 17:13:53 · 304 阅读 · 0 评论 -
【操作系统】内存分配问题
等下次在申请内存的时候,就直接从内存池取出对应的内存块就行了,而且可能这个内存块的虚拟地址与物理地址的映射关系还存在,这样不仅减少了系统调用的次数,也减少了缺页中断的次数,这将大大降低 CPU 的消耗。malloc 通过 brk() 系统调用在堆空间申请内存的时候,由于堆空间是连续的,所以直接预分配更大的内存来作为内存池,当内存释放的时候,就缓存在内存池中。这样当执行free函数时,free会对传入进来的内存地址向左偏移16字节,然后从这个16字节的分析出当前的内存块的大小,自然就知道要释放多大的内存了。原创 2024-05-06 11:17:03 · 885 阅读 · 3 评论 -
【操作系统】深入浅出死锁问题
线程A和线程B获取资源的顺序要一样,当线程A是先尝试获取资源A,然后尝试获取资源B的时候,线程B同样也是先尝试获取资源A,然后尝试获取资源B,也就是说,线程A和线程B总是以相同的顺序申请自己想要的资源。我们使用资源有序分配法的方式来修改前面发生死锁的代码,我们可以不改动线程A的代码。我们先要清楚线程A获取资源的顺序,它先是获取互斥锁A,然后获取互斥锁B。所以我们只需要将线程B改成以相同顺序的获取资源,就可以打破死锁了。原创 2023-09-17 15:42:35 · 237 阅读 · 0 评论 -
【操作系统】进程是如何调度的?
对于长作业,如果在第一级队列处理不完,可以移入下次队列等待被执行,虽然等待的时间变长了,但是运行时间也变更长了,所以该算法很好的。比如,一个长作业在就绪队列等待运行,而这个就绪队列有非常多的短作业,那么就会使得长作业不断的往后推,周转时间长,致使长作业长期不会被运行。前面的「时间片轮转算法」做了个假设,即让所有的进程同等重要,也不偏袒谁,大家的运行时间都一样。似乎很公平,但是当一个长作业先运行了,那么后面的短作业的等待的时间就会很长,不利于短作业,但是依然有缺点,可能会导致低优先级的进程永远不会运行。原创 2023-09-15 22:03:28 · 660 阅读 · 0 评论 -
【操作系统】进程,线程和协程的哪些事儿
我们编写的代码只是个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着CPU会执行程序中的每一条指令,那么这个运行中的程序,就被称为进程。线程是进程当中的一条执行流程。同一个进程内多个线程之间可以共享代码段、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的。线程的优缺点一个进程中可以存在多个线程;各个线程之间可以并发执行;各个线程之间可以共享地址空间和文件等资源。原创 2023-09-15 10:43:14 · 169 阅读 · 0 评论