2023年8月2日发(作者:)
⾯试基础知识之LINUX篇,⾯试基础-linux操作系统篇 -e '4 a newline' testfile:4 ⾏之后添加⼀⾏sed -n '5,7p':仅列出 /etc/passwd ⽂件内的第 5-7 ⾏如果你有⼀个 100 万⾏的⽂件,你要在第 100 ⾏加某些⽂字,此时使⽤ vim 可能会疯掉!因为⽂件太⼤了!那怎么办?就利⽤ sed !sed -i '$a # This is a test' regular_利⽤ sed 直接在 regular_ 最后⼀⾏加⼊ # This is a test2.线程、进程、协程操作系统会以进程为单位,分配系统资源(CPU时间⽚、内存等资源),进程是资源分配的最⼩单位。线程,是操作系统调度(CPU调度)执⾏的最⼩单位。⼀个线程只能属于⼀个进程,⽽⼀个进程可以有多个线程,但⾄少有⼀个线程;协程,是⼀种⽐线程更加轻量级的存在,协程不是被操作系统内核所管理,⽽完全是由程序所控制(也就是在⽤户态执⾏)。协程在⼦程序内部是可中断的,然后转⽽执⾏别的⼦程序,在适当的时候再返回来接着执⾏。直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下⽂的切换⾮常快。3.线程在操作系统中有堆区栈区代码段全局变量等等,哪些是共享的哪些独有线程上下⽂是独有的,thread context。我们也说过操作系统调度线程需要随时中断线程的运⾏并且需要线程被暂停后可以继续运⾏,操作系统之所以能实现这⼀点,依靠的就是线程上下⽂信息。⽐如:由于操作系统随时可以暂停线程的运⾏,因此我们保存以及恢复程序计数器中的值就能知道线程是从哪⾥暂停的以及该从哪⾥继续运⾏了。由于线程运⾏的本质就是函数运⾏,函数运⾏时信息是保存在栈帧中的,因此每个线程都有⾃⼰独⽴的、私有的栈区。再⽐如:函数运⾏时需要额外的寄存器来保存⼀些信息,像部分局部变量之类,这些寄存器也是线程私有的,⼀个线程不可能访问到另⼀个线程的这类寄存器信息。共享的:堆区,数据区和代码区。堆区是程序员⽐较熟悉的,我们在C/C++中⽤malloc或者new出来的数据就存放在这个区域。进程打开的⽂件也可以被所有的线程使⽤,这也属于线程间的共享资源。4.操作系统内存管理⽅式操作系统内存管理——分区、页式、段式管理分区式存储管理:把内存分为⼀些⼤⼩相等或不等的分区,操作系统占⽤其中⼀个分区,其余的分区由应⽤程序使⽤,每个应⽤程序占⽤⼀个或⼏个分区。分区式存储管理虽然可以⽀持并发连续内存分配:连续内存分配算法有⾸次适配,最佳适配,最差适配。⾸次适配:按地址排序的空闲块列表;最佳适配:按尺⼨,使⽤最⼩的⽐n⼤的可⽤空闲块;最差适配:使⽤最⼤可⽤空闲块⾮连续内存分配分段:段寄存器+地址寄存器,在分段管理的过程中,段长不是固定的。分页:内存分页,通过某种⽅式,将虚拟地址映射到物理地址,映射的关系是通过⼀张表实现的,也就是页表。5.进程通信⽅式及应⽤场合进程调度⽅式,linux⽤的哪种进程是⼀个程序的⼀次执⾏过程。管道,相当于开辟的内存缓冲区,起数据传递的作⽤信号量 ⼀个计数器消息队列:消息的链表信号,⽤于通知进程发⽣了哪些系统事件共享内存,多个进程可以直接读写同⼀块内存空间嵌套字6.僵⼫进程、孤⼉进程孤⼉进程:⼀个⽗进程退出,⽽它的⼀个或多个⼦进程还在运⾏,那么那些⼦进程将成为孤⼉进程。孤⼉进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集⼯作;僵⼫进程:⼀个进程使⽤fork创建⼦进程,如果⼦进程退出,⽽⽗进程并没有调⽤wait或waitpid获取⼦进程的状态信息,那么⼦进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。如果⼤量的产⽣僵死进程,将因为没有可⽤的进程号⽽导致系统不能产⽣新的进程.此即为僵⼫进程的危害,应当避免。⼦进程退出时向⽗进程发送SIGCHILD信号,⽗进程处理SIGCHILD信号。在信号处理函数中调⽤wait进⾏处理僵⼫进程。7.查看io的命令top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过⼤,很可能是磁盘 IO 太⾼了Iostat: ⽤于输出CPU和磁盘I/O相关的统计信息8.32位系统⼤概有2^32约为4G的⼤⼩,为什么虚拟内存可以才2G虚拟内存是windows管理所有可⽤内存的⽅式,对于32位Windows系统,每个进程所⽤到的虚拟内存地址从0到2^32-1,总容量4Gb,其中2Gb是与操作系统以及其他所有进程所共享,另外2GB分派给进程独占(这就是常说的32位Windows系统中⼀个进程最多能⽤2G内存的由来)如何进⾏批量修改正则表达式:s/vivian/sky/ 替换当前⾏第⼀个 vivian 为 sky:s/vivian/sky/g 替换当前⾏所有 vivian 为 采⽤的命令1.查找包含abc的⾏数有多少cat ./ |grep abc| wc -命令参数1 (HUP):重新加载进程。9 (KILL):杀死⼀个进程。15 (TERM):正常停⽌⼀个进程。3.查看⽂件中是否有某个字符串的命令:cat ./ |grep abc4.⽂档中每⼀⾏都是字符串,有些⾏是重复的,如何找出并显⽰不重复的⾏sort file |uniq5.给定⼀个C⽂件,如何⽤⼀个命令找到⽂件中的⼀⾏或者⼀个字符?sed -n '5,10p' filename 这样你就可以只查看⽂件的第5⾏到第10⾏。6.删除指定后缀的⽂件find . -name “*.png” | xargs rm - 以逗号分割输⼊第三列cat |awk ‘BEGIN{ORS=”,”} {print $3}’
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690958935a473103.html
评论列表(0条)