1. 简述gcc编译过程
①预处理--以#开头的命令
gcc -E main.c -o main.i
②转汇编(编译)
gcc -S main.i -o main.s
③汇编(转二进制)
as main.s -o main.o
④链接--链接库
gcc main.o -o main -l库名
2.死锁的原因、条件
系统资源不足。在这种情况下,进程的资源请求可能无法得到满足,导致死锁。
进程运行推进的顺序不合适,或者由于进程运行推进顺序与速度不同,也可能导致死锁。
资源分配不当也是死锁的原因之一。
产生死锁的四个必要条件如下:
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
只要上述条件之一不满足,就不会发生死锁,而只要系统发生死锁,这些条件必然成立。
3.什么是进程(Process),线程(Thread),有什么区别
进程是操作系统中分配资源和调度的基本单位。一个程序至少要开启一个进程,进程是由进程控制块(PCB)、程序段、数据段三部分组成。一个进程可以包含多个线程,这些线程共享进程的地址空间和资源,并且通过同步机制来协调对共享资源的访问。
线程是进程的基本执行单元,是处理器调度的最小单位。一个进程中的每个线程都有自己的线程控制块(TCB)、指令指针(IP)、栈和寄存器组。每个线程有自己的堆栈。线程的调度由操作系统负责,当一个线程完成了一次调度后,它将返回自己的进程空间,从而执行该进程的其他线程。
以下是进程和线程的区别&#