Day01

1. 说一说常用的 Linux 命令

  1. cd:切换当前目录
  2. ls:查看当前文件与目录
  3. grep:通常与管道命令一起使用,用于对一些命令的输出进行筛选加工
  4. cp:复制文件或文件夹
  5. mv:移动文件与文件夹
  6. rm:删除文件或文件夹
  7. ps查看进程情况
  8. kill:杀死进程
  9. tar:对文件进行打包
  10. cat:查看文件内容
  11. top:查看操作系统的信息,如进程、CPU占用率、实时内存信息等
  12. free:查看内存使用情况
  13. pwd显示当前工作目录

2. 静态库和动态库如何制作及使用,区别是什么

  1. 静态库:在linux下命名为libxxx.a,在Windows下命名为libxxx.lib
  2. 动态库:在linux下命名为libxxx.so,在Windows下命名为libxxx.dll,动态库使用需要有库文件和头文件,编译程序时通过“-l 动态库名"参数进行编译。在运行程序之前还需要配置动态库的加载路径,程序才能够正常运行
  3. 区别:静态库gcc进行链接时,会把静态库中的代码打包到可执行程序中,编译时加载;发布程序时无需提供静态库,移植方便;但是消耗内存,更新部署发布麻烦;动态库gcc进行链接时,动态库的代码不会被打包到可执行程序中,运行时加载;发布程序时需要提供动态库;内存占用小,更新部署发布简单

3. 说一说进程调度算法有哪些

  1. FCFS,先来先服务算法,对长作业有利
  2. 短作业优先调度算法:对长作业不利,容易导致饥饿现象,平均周转时间最少
  3. 优先级调度算法:分为抢占式和非抢占式,一般系统进程大于用户进程,交互进程大于非交互进程,I/O进程大于计算型进程
  4. 高响应比调度算法:综合考虑等待时间和估计运行时间,响应比等于(等待时间+要求服务时间)/要求服务时间
  5. 时间片轮转调度算法:就是在先来先服务的基础上加上时间片的机制
  6. 多级队列调度算法:按照进程的属性和类别采用不同的调度策略建立多个调度队列
  7. 多级反馈队列调度算法:有多个队列,队列之间采取剥夺式优先级调度算法,队列之内采用时间片轮转调度算法,优先级越高的队列单个时间片越小。这种设计可以使高优先级的任务更快地获得CPU时间,从而提高系统对于紧急任务或需要快速响应的任务的效率。

4. 说一说什么是大端、小端,如何判断大端和小端

  1. 大端存储模式:数据的低位保存在内存中的高地址中,数据的高位保存在内存中的低地址中
  2. 小端存储模式:数据的低位保存在内存中的低地址中,数据的高位保存在内存中的高地址中

image-20240207201152739

如何判断大小端模式:

int main()
{
    short big = 0xff00;
    char litter = big;
    if (litter == 0xff)
    {
        cout << "大端" << endl;
    }
    else
    {
        cout << "小端" << endl;
    }
    return 0;
}

5. 什么是孤儿进程,什么是僵尸进程,如何解决僵尸进程

  1. 孤儿进程:孤儿进程是指一个父进程退出后,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并且由init进程对他们完成状态收集工作,孤儿进程一般不会产生任何危害
  2. 僵尸进程:僵尸进程是指一个进程使用fork()函数创建子进程,如果子进程退出,而父进程并没有调用wt()或者wtpid()系统调用取得子进程的终止状态,那么子进程的进程描述符依然保存在系统中,占用系统资源,这种进程成为僵尸进程
  3. 为了防止产生僵尸进程,在fork()子进程后我们要及时在父进程中使用wt()或者wtpid()系统调用,等子进程结束后,父进程回收子进程PCB的资源。同时,当子进程退出的时候,内核都会给父进程一个SIGCHLD信号,所以可以建立一个捕获SIGCHLD信号的信号处理函数,在函数体中调用wt()或wtpid(),就可以清理退出的子进程。
最后修改:2024 年 06 月 08 日
如果觉得我的文章对你有用,请随意赞赏