怎样自学做网站需要多少钱,西安国际网站设计,ps和dw 做网站,dw软件使用教程说明#xff1a;
面试群#xff0c;群号#xff1a; 228447240面试题来源于网络书籍#xff0c;公司题目以及博主原创或修改#xff08;题目大部分来源于各种公司#xff09;#xff1b;文中很多题目#xff0c;或许大家直接编译器写完#xff0c;1分钟就出结果了。但…说明
面试群群号 228447240面试题来源于网络书籍公司题目以及博主原创或修改题目大部分来源于各种公司文中很多题目或许大家直接编译器写完1分钟就出结果了。但在这里博主希望每一个题目大家都要经过认真思考答案不重要重要的是通过题目理解所考知识点好应对题目更多的变化博主与大家一起学习一起刷题共同进步写文不易麻烦给个三连操作系统篇
1.什么是进程什么是线程
答案 进程是资源分配的基本单位他是程序执行时的一个实例在程序运行是创建。
线程是程序执行的最小单位是进程的一个执行流一个进程里包含多个线程。
2.进程、线程、协程的区别
答案 协程是微线程在子程序内部执行可在子程序内部中断转而执行别的子程序在适当的时候再返回来接着执行。
进程和线程区别(开销问题、通信、线程进程之间影响)
进程是资源最小分配单位线程是最小的执行单位也是处理器调度的基本单位进程拥有自己的独立地址空间每启动一个进程系统就会分配地址空间建立数据表来维护代码段数据段堆栈段进程的全局变量是不共用的这种开销是非常大而线程是共享进程的数据使用相同的地址空间因此CPU切换一个线程的开销远小于进程的切换线程之间的通信更加方便同一进程下的线程共享全局变量、静态数据、而进程间的通信需要以通信的方式IPC进行但是线程的缺点是同步和互斥是编写多线程的难点多进程的优点是一个进程死掉不会对另个进程有影响而多线程只要一个线程死掉整个进程就会死掉每个线程拥有自己的栈段和寄存器组
线程和协程的区别
协程执行效率极高协程直接操作栈基本没有内核切换的开销所以上下文切换非常快协程不需要多线程的锁机制因为多个线程从属一个线程不存在同时写冲突
其他区别
—个线程可以多个协程一个进程也可以单独拥有多个协程线程进程都是同步机制而协程则是异步协程能保留上一次调用时的状态每次过程重入时就相当于进入上一次调用的状态。线程是抢占式而协程是非抢占式的所以需要用户自己释放使用权来切换到其他协程因此同协程并不是取代线程,而且抽象于线程之上线程是被分割的CPU资源,协程是组织好的代码流程,协程需要线程来承载运行线程是协程的资源,但协程不会直接使用线程,协程直接利用的是执行器(Interceptor),执行器可以关联任意线程或线程池,可以使当前线程,UI线程,或新建新程线程是协程的资源。协程通过Interceptor来间接使用线程这个资源
3.何时使用多进程何时使用多线程(考虑优缺点)
答案 对资源保护和管理要求高不限制开销和效率使用多进程 要求效率高切换频繁使用多线程
4.创建进程的方式
答案
系统初始化像后台进程守护进程一个进程开启另个进程fork用户的交互式请求
子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符父进程与子进程并不共享这些存储空间这是子进程对父进程相应部分存储空间的完全复制执行fork()之后每个进程均可修改各自的栈数据以及堆段中的变量而并不影响另一个进程 如果是vfork的话就会有影响
5.进程有几种状态
答案 有五种状态创建、就绪、运行、阻塞、终止 在linux系统中进程的生命周期是从执行到终止
6.进程间通信方式有哪些
答案 1.管道(pipe) 2.信号量(semophore) 3.消息队列(messge queue) 4.信号signal 5.共享内存(Shared memory) 6.套接字(socket)
管道分为有名和无名管道无名管道只能有血缘关系的进程间通信是半双工通信而有名管道允许无血缘进程之间通信 信号量是个计数器用来控制多个进程对共享资源的访问用于进程间的同步和互斥 消息队列消息的链接表放在内核中消息队列独立于发送和接收的进程进程终止后消息队列并不会消失消息队列可以实现消息的随机查询可以按照消息的类型读取 信号用于通知接收进程某个事件已经发生。主要作为进程间以及同一进程的不同线程间的同步手段 共享内存共享内存就是映射一段能被其他进程访问的内存这段共享内存有一个进程创建但多个进程都可以访问共享内存是最快的IPC它往往配合其他通信机制使用如信号量来实现同步和通信 原理开辟一个物理内存空间各个进程物理地址映射到自己的虚拟地址空间通过虚拟地址就可以直接访问进而实现数据共享共享内存是最快的通信方式因为少了数据的拷贝 //1.开辟共享内存shmidshmget(key,size,IPC_CREAT);//2.映射到进程虚拟地址addrshmat(shmid,NULL,0);//3.操作数据memcpy(addr,buf,sizeof(buf));//4.解除映射int retshmdt(addr);套接字:它可用于不同机器之间的进程通信
注意信号量、信号、消息队列可以用来同步
7.进程间通信的选择
答案 管道通信主要是应用在进程间互发短小、频率很高的消息 共享内存主要是在接进程间共享数据庞大、读写频繁的数据(因为是把物理地址映射到进程) 其他考虑socket
8.什么是僵尸进程、孤儿进程、守护进程
答案 僵尸进程一个进程使用fork出一个子进程如果子进程退出但是父进程没有使用 wait或者waitpid函数回收子进程的资源那么该进程就是僵尸进程
孤儿进程是指父进程异常退出而子进程还没退出那么子进程就会被1号进程(init)收养
守护进程是指后台进程有意把父进程先结束然后被1号进程收养
9.僵尸进程有什么危害
答案 僵尸进程的进程号并不会被释放但是系统的进程号是有限的如果出现大量僵尸进程就会导致系统无进程号可用就无法产生新进程 如何杀死僵尸进程 可以通过杀死其父进程来结束僵尸进程
10.线程间通信方法有哪些
答案 临界区、互斥量、信号量、事件、条件变量、读写锁
临界区每个线程访问临界资源的那段代码叫临界区每次只允许一个线程进入临界区进入后其他线程无法进入 互斥量采用互斥对象机制只有拥有互斥对象的线程才可以访问 信号量计数器允许多个线程同时访问统一资源 条件变量通过条件变量通知操作的方式保持多线程同步 读写锁读写锁和互斥量类似但互斥量要么是锁住状态要么就是不加锁状态。读写锁一次只允许一个线程写但允许一次多个线程读这样效率就比互斥锁要高
11.什么是内核线程和用户线程
答案 用户线程是由用户进行管理用户线程的创建、调度、同步和销毁全又库函数在用户空间完成不需要内核的帮助这种线程开销是比较小的
内核线程由操作系统创建和销毁
12.如何实现守护进程
答案
创建子进程终止父进程调用setsid创建一个新会话将当前目录更改为根目录重设文件权限掩码文件权限掩码是指屏蔽掉文件权限的对应位关闭不再需要的文件描述符