操作系统
操作系统基础
1. 操作系统的功能?
OS是管理计算机硬件与软件资源的程序。
操作系统有 6 大功能:
- 进程管理:进程的创建、撤销、阻塞、唤醒,进程间的通信等。
- 存储管理:内存的分配和管理、外存(磁盘等)的分配和管理等。
- 文件管理:文件的读、写、创建及删除等。
- 设备管理:完成设备(输入输出设备和外部存储设备等)的请求或释放,以及设备启动等功能。
- 网络管理:操作系统负责管理计算机网络的使用。网络是计算机系统中连接不同计算机的方式,操作系统需要管理计算机网络的配置、连接、通信和安全等,以提供高效可靠的网络服务。
- 安全管理:用户的身份认证、访问控制、文件加密等,以防止非法用户对系统资源的访问和操作。
Linux 是一套免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本,但它们都使用了 Linux 内核 。
2. 什么是用户态和内核态?
用户态运行的进程可以直接读取用户程序的数据,拥有较低的权限。
内核态运行的进程几乎可以访问计算机的任何资源包括系统的内存空间、设备、驱动程序等,不受限制,拥有非常高的权限。
**只有一个内核态不行么?**1. 安全稳定。在 CPU 的所有指令中,有一些指令是比较危险的比如内存分配、设置时钟、IO 处理等,如果所有的程序都能使用这些指令的话,会对系统的正常运行造成灾难性地影响。2.性能效率。如果计算机系统中只有一个内核态,所有程序或进程都必须共享系统资源,导致系统资源的竞争和冲突,从而影响系统性能和效率。
**如何切换的?**系统调用,用户态主动切换到内核态。中断,设备完成用户请求后发出中断信号,CPU暂停吓一跳指令转而处理中断信号处理程序。异常,用户态执行时发送异常后,切换到处理异常的内核程序中。
**系统调用:**为应用程序提供的访问操作系统底层资源(设备、文件、网络等)的函数。用户态程序发起系统调用,trap陷入,当前cpu执行的程序中断,跳转到中断处理程序,开始执行系统调用,内核处理完毕后主动触发trap,再次中断切换回用户态。
陷阱trap:程序主动进行系统调用进入内核态的机制,是程序正常执行流程的一部分,CPU 从用户态切换到内核态,执行相应的系统服务例程,完成后再返回用户态继续执行后续指令。
中断Interrupt:程序执行过程中,出现某些外部事件或硬件故障时,CPU暂停正在执行的程序,处理事件后再返回程序继续执行。异步性,随机发生,强制中断。
异常Exception:程序执行过程中出现了异常,正常执行流程被打断。系统可能会终止程序、进行错误恢复等。
信号signal:通信方式,用于在进程之间或内核与进程之间传递异步事件通知。进程可以选择对不同的信号采取不同的处理方式,如忽略信号、执行默认处理动作或自定义信号处理函数。
进程和线程
1. 是什么?区别?
进程:计算机中正在运行的一个程序实例。
线程:轻量级进程,线程是最小的执行单位,运算调度的基本单位。
- 线程是进程划分成的更小的运行单位,一个进程在其执行的过程中可以产生多个线程。
- 线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。
- 线程执行开销小,但不利于资源的管理和保护;而进程正相反。
**有了进程为什么还需要线程?**进程切换开销大,线程切换成本低。多个线程可以并发处理不同任务,有效利用多处理器、多和计算机,进程一个时间仅能做一件事,如果阻塞就会挂起。统一进程内的线程共享内存和文件,相互通信方便,无需调用内核。
**为什么要用多线程?**减少开销。系统并发需要。单核时代提高单进程的CPU和IO利用率,多核时代提高进程利用多核CPU的能力。
2. ⭐线程间的同步的方式有哪些?
线程同步:当多个线程并发执行时,同步线程来避免资源使用冲突。
- 互斥锁mutex。互斥对象只有一个,拥有互斥对象的线程才有访问公共资源的权限。
- 读写锁read-write-lock。允许多个线程同时读取共享资源,但只有一个线程可以对共享资源进行写操作。
- 信号量semaphore。控制同一时刻访问同一资源最大线程数。
- 屏障barrier。等待多个线程到达某个点再一起继续执行。
- 事件event。Wait/Notify:通过通知操作的方式来保持多线程同步。
3. PCB 是什么?包含哪些信息?
Process Control Block 即进程控制块,来管理和跟踪进程的数据结构。
进程执行时,PCB 中的信息会不断变化,操作系统会根据这些信息来管理和调度进程。
PCB的内容:进程描述信息(进程名称、标识符),进程调度信息(状态、阻塞原因、优先级),进程对资源的需求情