Linux
文章平均质量分 94
学习Linux操作系统
马尔科686
这个作者很懒,什么都没留下…
展开
-
【Linux】基础IO(系统文件I/O Open write 文件描述符fd 什么是当前路径? 重新谈论文件 文件操作)
文件在磁盘,磁盘是硬件,只有操作系统可以管理,那么所有的人想要访问磁盘就不能跨过操作系统,必须得使用操作系统提供的文件级别的系统调用的接口。操作系统只有一个,所以上层语言无论如何变化,a.库函数底层必须调用系统调用接口。b.库函数可以千变万化,但底层不变。原创 2023-04-06 00:37:01 · 513 阅读 · 4 评论 -
【Linux】进程控制(2)(阻塞vs非阻塞 进程程序替换 替换函数 单进程: 别的方式 进程程序替换原理 通过myexec执行自己写的程序)
进程在运行期间,地址空间被指向,它对应的代码区等等,进入页表,映射到物理内存,如下图,进程数据和进程代码,可执行程序最根上也由代码和数据两部分构成,在物理内存中,正常执行代码,访问数据,就一直被CPU调度,进程就一直在运行,当我们实际在调用exec 的时候,就是把可执行程序对应的数据和代码 、程序替换,替换的时候就是把我们的代码和数据load到物理内存对应的位置,所以当我们调用exec*系列的函数本质就是用我们对应的可执行程序的代码和数据来覆盖曾经的代码和数据,必要的时候可能要修改页表。原创 2023-04-04 01:39:38 · 278 阅读 · 0 评论 -
【Linux】进程控制(1)(进程创建 写时拷贝 fork常见用法 fork调用失败的原因 进程终止 退出码 进程退出的情况 进程等待 进程等待的必要性 进程等待的方法 获取子进程的退出信息)
我们使用创建子进程的方式调用fork,创建子进程,子进程跑10s,10s后退出,然后父进程会等15s,在前10s,子进程一定会退,退了之后,没有人等他没有人wait他,所以子进程处于Z状态,大概再等5s钟,父进程休眠完了,醒来调用wait的时候,此时wait会去回收子进程,回收子进程就会将子进程的状态从Z释放了,我们就能看到,开始是两个进程,后来变成一个进程是S或者R,另一个是Z,再过上5s钟,发现只有一个父进程了。有两个空间,一个是用户空间,写我们自己的代码,另一个是内核空间,里面是操作系统的代码。原创 2023-04-01 20:29:52 · 742 阅读 · 7 评论 -
【Linux】程序地址空间 (虚拟地址空间 区域划分:区域调整 进程地址空间和物理内存之间映射关系 理解进程地址空间)
CPU从main函数开始跑,加载的是main函数的虚拟地址,此时查页表访问到物理地址,就调main函数,开始一步一步往后执行,我们要调fun函数,那么就是把fun函数对应的虚拟地址(CPU读的是指令,指令内部就有地址(虚拟地址))load到CPU中,读到0x1234,然后就通过页表映射开始调fun函数,fun函数要用a,那么我们就把use a的指令读取到CPU中,然后CPU读到a的地址0x2222,要进行的操作是++操作,然后通过地址空间找页表,然后映射到物理内存,找到全局变量a。原因是物理地址不同。原创 2023-04-01 00:16:54 · 246 阅读 · 0 评论 -
【Linux】环境变量(基本概念 常见环境变量 测试PATH 环境变量相关命令)
我们定义一个变量set命令打印出来的东西很多,有环境变量、PS…原创 2023-03-16 22:38:01 · 1330 阅读 · 7 评论 -
【Linux】进程优先级(进程优先级 Linux下优先级 用top命令更改已存在进程的nice 其他概念 进程切换)
那我们发现我们计算机好像有多个进程在跑,只有一个CPU的时候,这个进程不是在CPU跑完了才能被从CPU拿下来,当代计算机采用的是时间片轮转的策略,也就是说,我们不管进程未来执行完花多少时间,我们只给这一次10ms的时间让进程占有CPU,那么时间到了,进程就必须从CPU剥离下来,要么等吧,要么就去进程队列尾部重新排队。在任何时刻,CPU里面的寄存器里面的数据,看起来是在大家都能看到的寄存器上,但是,寄存器内的数据,只属于当前运行的进程!发现子进程退出了, 变僵尸了,但是父进程还在跑,这就证明进程具有独立性。原创 2023-03-13 11:36:48 · 1897 阅读 · 3 评论 -
【Linux】进程概念(3)(进程的状态 running 阻塞sleeping 、disk sleep、tracing stop 挂起 死亡dead zombie)
根据冯诺依曼,CPU很快,所有的硬件很慢但是进程或多或少都要访问硬件,硬件也很少基本上都只有一个,每一个进程在访问外设的时候,和CPU不一样,CPU很快,外设很慢,比如说进程A在访问磁盘,B、C也来了,但是得等待,硬件被多个进程访问,没有准备好的时候,进程就只能等待,,也可以维护自己的等待队列,一个CPU正在执行某个进程,发现这个进程要向磁盘写入数据,但是磁盘此时没有准备好,CPU不陪着磁盘等待,此时CPU把进程从运行队列里拿出来,链入到磁盘的等待队列里面,此时CPU继续调度运行队列的别的进程,所以。原创 2023-03-12 00:39:04 · 1059 阅读 · 7 评论 -
【Linux】进程概念(2)(进程 操作系统管理进程 PCB(struct task_struct) 查看进程 进程的常见调用 系统调用 man getpid/getppid man fork)
指向的那个,然后把代码交给CPU,CPU就可以执行对应进程的代码了,若以后有一个进程想退出了,我们只需要确定PCB属性里面有没有一个进程的状态是死亡的,死亡的话操作系统遍历链表,把状态是死亡的节点找到,然后把对应的代码和数据释放掉,然后把PCB释放掉,此时这个进程就会释放了。对进程管理本质不是对进程的可执行程序管理,而是对应的PCB结构做管理。所对应的结构体对象或者变,然后它们每一个都指向自己的代码,到这里就完成了先描述,然后再组织,操作系统把所有的进程的PCB,结构体对象链接起来,拿着。原创 2022-11-11 19:25:40 · 772 阅读 · 10 评论 -
【Linux】进程概念(1)(冯诺依曼体系结构 操作系统(Operator System) 概念以及定位 设计OS的目的 如何理解管理 系统调用和库函数概念)
这里的存储器指的是谁?内存,内存这个设备有一个特性叫做掉电易失,和内存本身的结构有关系。磁盘:是一种外存,这种设备拥有永久性存储的能力,我们一般创建的文件都在里面存储,它在体系里面属于外设的一种,外设通常被称为输入设备或者输出设备。典型的键盘是输入设备,显示器是输出设备,摄像头在计算机里算输入设备,有很多设备只是输入或者输出,但是还有很多设备既是输入设备又是输出设备,最典型的就是磁盘和网卡。原创 2022-11-06 20:34:02 · 634 阅读 · 6 评论 -
【Linux】权限(什么是权限? 改文件属性 改角色权限 八进制方案 权限的重要性)
权限是约束人的(一个或者某些群体)问题:我能不能去腾讯视频上做OJ题?目标对象(腾讯视频),本来就没有对应的属性(业务),所以如果一个目标对象属性当中天然不具备某种属性或者业务,所以人也就不具备这个权限。权限:一件事情是否允许被谁做。我们今天谈论的权限是Linux权限,更多的是文件权限。文件权限 = 人 + 文件的属性,权限约束两个,一个是人,第二个是文件属性。人 -> 角色,你能做很多事情是因为你的角色。(学生、老师)为什么要存在所属组?原创 2022-10-20 23:24:48 · 558 阅读 · 0 评论