制作网站公司唐山学习软件免费

当前位置: 首页 > news >正文

制作网站公司唐山,学习软件免费,外包公司有哪些,福建建设人才与科技发展中心文章目录 操作系统操作系统基础1. 操作系统的功能#xff1f;2. 什么是用户态和内核态#xff1f; 进程和线程1. 是什么#xff1f;区别#xff1f;2. ⭐线程间的同步的方式有哪些#xff1f;3. PCB 是什么#xff1f;包含哪些信息#xff1f;4. 进程的状态有哪些#… 文章目录 操作系统操作系统基础1. 操作系统的功能2. 什么是用户态和内核态 进程和线程1. 是什么区别2. ⭐线程间的同步的方式有哪些3. PCB 是什么包含哪些信息4. 进程的状态有哪些5. ⭐进程间的通信方式有哪些6. ⭐进程的调度算法有哪些?7. 什么是僵尸进程和孤儿进程 死锁内存管理1. OS内存管理负责的内容2. ⭐内存管理方式3. 内存碎片4. ⭐虚拟内存是什么有什么用/优点5. 分段机制是什么6.⭐分页机制是什么7. 分页和分段的异同点8. 段页机制是什么9. 什么是局部性原理 文件系统1. 文件系统做了什么2. 软链接和硬链接的区别3. 提高文件系统性能的方式4. 常见的磁盘调度算法 操作系统 操作系统基础

  1. 操作系统的功能 OS是管理计算机硬件与软件资源的程序。 操作系统有 6 大功能 进程管理进程的创建、撤销、阻塞、唤醒进程间的通信等。存储管理内存的分配和管理、外存磁盘等的分配和管理等。文件管理文件的读、写、创建及删除等。设备管理完成设备输入输出设备和外部存储设备等的请求或释放以及设备启动等功能。网络管理操作系统负责管理计算机网络的使用。网络是计算机系统中连接不同计算机的方式操作系统需要管理计算机网络的配置、连接、通信和安全等以提供高效可靠的网络服务。安全管理用户的身份认证、访问控制、文件加密等以防止非法用户对系统资源的访问和操作。 Linux 是一套免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本但它们都使用了 Linux 内核 。
  2. 什么是用户态和内核态 用户态运行的进程可以直接读取用户程序的数据拥有较低的权限。 内核态运行的进程几乎可以访问计算机的任何资源包括系统的内存空间、设备、驱动程序等不受限制拥有非常高的权限。 只有一个内核态不行么1. 安全稳定。在 CPU 的所有指令中有一些指令是比较危险的比如内存分配、设置时钟、IO 处理等如果所有的程序都能使用这些指令的话会对系统的正常运行造成灾难性地影响。2.性能效率。如果计算机系统中只有一个内核态所有程序或进程都必须共享系统资源导致系统资源的竞争和冲突从而影响系统性能和效率。 如何切换的系统调用用户态主动切换到内核态。中断设备完成用户请求后发出中断信号CPU暂停吓一跳指令转而处理中断信号处理程序。异常用户态执行时发送异常后切换到处理异常的内核程序中。 系统调用为应用程序提供的访问操作系统底层资源设备、文件、网络等的函数。用户态程序发起系统调用trap陷入当前cpu执行的程序中断跳转到中断处理程序开始执行系统调用内核处理完毕后主动触发trap再次中断切换回用户态。 陷阱trap程序主动进行系统调用进入内核态的机制是程序正常执行流程的一部分CPU 从用户态切换到内核态执行相应的系统服务例程完成后再返回用户态继续执行后续指令。 中断Interrupt程序执行过程中出现某些外部事件或硬件故障时CPU暂停正在执行的程序处理事件后再返回程序继续执行。异步性随机发生强制中断。 异常Exception程序执行过程中出现了异常正常执行流程被打断。系统可能会终止程序、进行错误恢复等。 信号signal通信方式用于在进程之间或内核与进程之间传递异步事件通知。进程可以选择对不同的信号采取不同的处理方式如忽略信号、执行默认处理动作或自定义信号处理函数。 进程和线程
  3. 是什么区别 进程计算机中正在运行的一个程序实例。 线程轻量级进程线程是最小的执行单位运算调度的基本单位。 线程是进程划分成的更小的运行单位,一个进程在其执行的过程中可以产生多个线程。线程和进程最大的不同在于基本上各进程是独立的而各线程则不一定因为同一进程中的线程极有可能会相互影响。线程执行开销小但不利于资源的管理和保护而进程正相反。 有了进程为什么还需要线程?进程切换开销大线程切换成本低。多个线程可以并发处理不同任务有效利用多处理器、多和计算机进程一个时间仅能做一件事如果阻塞就会挂起。统一进程内的线程共享内存和文件相互通信方便无需调用内核。 为什么要用多线程减少开销。系统并发需要。单核时代提高单进程的CPU和IO利用率多核时代提高进程利用多核CPU的能力。
  4. ⭐线程间的同步的方式有哪些 线程同步当多个线程并发执行时同步线程来避免资源使用冲突。 互斥锁mutex。互斥对象只有一个拥有互斥对象的线程才有访问公共资源的权限。读写锁read-write-lock。允许多个线程同时读取共享资源但只有一个线程可以对共享资源进行写操作。信号量semaphore。控制同一时刻访问同一资源最大线程数。屏障barrier。等待多个线程到达某个点再一起继续执行。事件event。Wait/Notify通过通知操作的方式来保持多线程同步。
  5. PCB 是什么包含哪些信息 Process Control Block 即进程控制块来管理和跟踪进程的数据结构。 进程执行时PCB 中的信息会不断变化操作系统会根据这些信息来管理和调度进程。 PCB的内容进程描述信息进程名称、标识符进程调度信息状态、阻塞原因、优先级进程对资源的需求情况CPU时间、内存空间、IO设备等进程打开的文件信息文件描述符、文件类型、打开模式处理机状态信息通用寄存器、指令计数器、程序状态字、用户栈指针……
  6. 进程的状态有哪些 创建状态(new)进程正在被创建尚未到就绪状态。就绪状态(ready)进程已处于准备运行状态即进程获得了除了处理器之外的一切所需资源一旦得到处理器资源(处理器分配的时间片)即可运行。运行状态(running)进程正在处理器上运行(单核 CPU 下任意时刻只有一个进程处于运行状态)。阻塞状态(waiting)又称为等待状态进程正在等待某一事件而暂停运行如等待某资源为可用或等待 IO 操作完成。即使处理器空闲该进程也不能运行。结束状态(terminated)进程正在从系统中消失。可能是进程正常结束或其他原因中断退出运行。
  7. ⭐进程间的通信方式有哪些 管道/匿名管道(Pipes) 具有亲缘关系的父子进程间或者兄弟进程之间的通信。只存在于内存中的文件。有名管道(Named Pipes) : 匿名管道由于没有名字只能用于亲缘关系的进程间通信。为了克服这个缺点提出了有名管道。有名管道严格遵循 先进先出(First In First Out) 。有名管道以磁盘文件的方式存在可以实现本机任意两个进程通信。信号(Signal) 信号是一种比较复杂的通信方式用于通知接收进程某个事件已经发生消息队列(Message Queuing) 消息队列是消息的链表具有特定的格式存放在内存中并由消息队列标识符标识。先进先出。存放在内核中只有在内核重启(即操作系统重启)或者显式地删除一个消息队列时该消息队列才会被真正的删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。比 FIFO 更有优势。消息队列克服了信号承载信息量少管道只能承载无格式字节流以及缓冲区大小受限等缺点。信号量(Semaphores) 计数器用于多进程对共享数据的访问信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。共享内存(Shared memory) 使得多个进程可以访问同一块内存空间不同进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依靠某种同步操作如互斥锁和信号量等。可以说这是最有用的进程间通信方式。套接字(Sockets) : 此方法主要用于在客户端和服务器之间通过网络进行通信。套接字是支持 TCP/IP 的网络通信的基本操作单元可以看做是不同主机之间的进程进行双向通信的端点简单的说就是通信的两方的一种约定用套接字中的相关函数来完成通信过程。
  8. ⭐进程的调度算法有哪些? 先到先服务(FCFSFirst Come, First Served) : 从就绪队列中选择一个最先进入该队列的进程为之分配资源使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度。 短作业优先(SJFShortest Job First) : 从就绪队列中选出一个估计运行时间最短的进程为之分配资源。 时间片轮转RRRound-Robin : 时间片轮转调度是一种最古老最简单最公平且使用最广的算法。每个进程被分配一个时间段称作它的时间片即该进程允许运行的时间。 ⭐多级反馈队列MFQMulti-level Feedback Queue前面介绍的几种进程调度的算法都有一定的局限性。如短进程优先的调度算法仅照顾了短进程而忽略了长进程 。多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业进程迅速完成因而它是目前被公认的一种较好的进程调度算法UNIX 操作系统采取的便是这种调度算法。 设有多个就绪队列每个队列赋予不同的优先级优先级从高到低排列同时优先级越高的队列中时间片越小。新进程进入系统后首先进入第 1 级队列末尾按先来先服务原则排队等待调度。当轮到该进程执行时便分配给它一个时间片。如果在该时间片内进程完成则撤离系统如果未完成则将它转入下一级队列的末尾。只有当第 1 级队列为空时调度程序才会调度第 2 级队列中的进程只有第 1 级到第 i - 1 级队列都为空时才会调度第 i 级队列中的进程。 优先级调度Priority为每个流程分配优先级首先执行具有最高优先级的进程依此类推。具有相同优先级的进程以 FCFS 方式执行。可以根据内存要求时间要求或任何其他资源要求来确定优先级。
  9. 什么是僵尸进程和孤儿进程 僵尸进程子进程已经终止但是其父进程仍在运行且父进程没有调用 wait()或 waitpid()等系统调用来获取子进程的状态信息释放子进程占用的资源导致子进程的 PCB 依然存在于系统中但无法被进一步使用。此时子进程被称为“僵尸进程”。避免僵尸进程的产生父进程需要及时调用 wait()或 waitpid()系统调用来回收子进程。top 命令查找zombie 值表示僵尸进程的数量为 0 则代表没有僵尸进程。孤儿进程一个进程的父进程已经终止或者不存在但是该进程仍在运行。这种情况下该进程就是孤儿进程。孤儿进程通常是由于父进程意外终止或未及时调用 wait()或 waitpid()等系统调用来回收子进程导致的。为了避免孤儿进程占用系统资源操作系统会将孤儿进程的父进程设置为 init 进程进程号为 1由 init 进程来回收孤儿进程的资源。 死锁 多个进程/线程同时被阻塞它们中的一个或者全部都在等待某个资源被释放。由于进程/线程被无限期地阻塞因此程序不可能正常终止。 死锁必要条件互斥。请求保持。不可剥夺。循环等待。 死锁预防破坏必要条件。一次性申请所有资源。按一定顺序层次分配资源。 死锁避免银行家算法。试探性分配判断是否是安全状态。 死锁检测定时运行一个死锁检测程序如果发现死锁再解除。进程资源分配图描述进程和资源申请分配关系的有向图。无环路没有死锁。有环路且每个资源类仅有一个资源发生死锁。有环路涉及资源类有多个资源不一定死锁。 死锁解除①结束所有进程重启OS。②撤销涉及死锁的所有进程接触死锁后运行。③逐个撤销涉及死锁的进程回收资源直到死锁解除。④抢占资源从涉及死锁中的某个或某几个线程中抢占资源剥夺后分配给其他涉及死锁的线程直到死锁解除。 内存管理
  10. OS内存管理负责的内容 内存分配和回收。地址转换。程序的虚拟地址-内存的物理地址。内存扩充。内存不足时利用虚拟内存或自动覆盖内存技术逻辑上扩充内存。内存映射。将文件映射到进程的进程空间从而可以通过内存指针读写内存的方法存取文件内容更快。内存优化。调整内存分配策略和回收算法来优化内存使用效率。内存安全。保证进程内存互不干扰。……
  11. ⭐内存管理方式 连续内存管理为一个用户程序分配一个连续的内存空间内存利用率一般不高。 块式管理。将内存分为固定大小的几个块每个块仅包含一个进程。会存在内部内存碎片和外部内存碎片。linux的伙伴系统算法。将内存按照2的幂次划分相邻内存块为一对伙伴。内存分配时伙伴系统先尝试找到大小最合适的内存块如果找到的太大就一分为二一直切分到合适大小。如果梁坤相邻内存块都被释放就合并形成更大的内存块。解决了外部内存碎片。对于内部内存碎片的问题Linux 采用 SLAB 进行解决。 非连续内存管理允许一个程序使用的内存分布在离散或者说不相邻的内存中相对更加灵活一些。 段式管理。程序的虚拟地址空间被分为大小不等的段以段的形式管理物理内存。会产生外部碎片。页式管理。将程序和内存都划分为固定大小的页程序的逻辑地址空间被划分为若干个页内存的物理地址空间也被划分为同样大小的页框。程序在内存中以页为单位进行存储页与页之间可以不连续。段页式管理。把物理内存先分成若干段每个段又继续分成若干大小相等的页。
  12. 内存碎片 内存申请和释放会产生内存碎片包括内部内存碎片内存碎片、外部内存碎片外部碎片。 内存碎片已经分配给进程使用但未被使用的内存。原因分配的内存比实际需要的大采用固定比例分配内存。 外部碎片未分配的连续内存区域太小以至于不能满足任意进程所需要的内存分配请求这些小片段且不连续的内存空间被称为外部碎片。
  13. ⭐虚拟内存是什么有什么用/优点 一种内存管理技术它将物理内存抽象为一个更大的逻辑地址空间使得程序可以使用比实际物理内存更多的内存空间。把一部分硬盘空间模拟成内存来使用当物理内存不足时将暂时不用的数据从物理内存移动到硬盘上的虚拟内存空间需要时再将数据从虚拟内存调回物理内存。 优点 进程内存隔离。每个进程都认为自己拥有了整个物理内存进程之间隔离一个进程中的代码无法更改另一进程的物理内存。更大的可用空间。程序拥有超过物理内存大小的可用内存空间。提升物理内存利用率。只需要把进程正在用的数据加载进物理内存。简化内存管理。借助虚拟地址空间访问物理内存不需要和物理内存直接打交道。多个进程共享物理内存进程在运行过程中会加载许多操作系统的动态库。这些库对于每个进程而言都是公用的它们在内存中实际只会加载一份这部分称为共享内存。提高内存使用安全性控制进程对物理内存的访问隔离不同进程的访问权限提高系统的安全性。 物理地址Physical Address 是真正的物理内存中地址是内存地址寄存器中的地址。程序中访问的内存地址不是物理地址而是 虚拟地址Virtual Address。虚拟地址空间是虚拟地址的集合是虚拟内存的范围。 操作系统一般通过 CPU 芯片中的一个重要组件 MMU(Memory Management Unit内存管理单元) 将虚拟地址转换为物理地址这个过程被称为地址翻译/地址转换Address Translation地址转换机制包括分段机制、分页机制、段页机制。
  14. 分段机制是什么 程序的虚拟地址空间被分为大小不等的段以段的形式管理物理内存。虚拟地址(段号,段内偏移量)。段号标识虚拟地址属于整个虚拟地址空间中的哪一段段内偏移量相对于当前段起始地址的偏移量。分段管理通过 段表Segment Table 映射虚拟地址和物理地址。段表中每一项为段号对应的物理内存起始地址段长度。 分段机制会导致外存碎片段与段之间有碎片。 6.⭐分页机制是什么 物理内存被划分为连续等长的物理页程序的虚拟地址空间被划分为连续等长的虚拟页。虚拟地址为(虚拟页号页内偏移量)页表的表项为(虚拟页号对应的物理页号一个进程对应一个页表。分页机制下虚拟页可以被映射到任意的物理页。 虚拟页号不一定能找到对应的物理页号可能会页缺失物理内存中没有对应的物理页或者物理页和虚拟页没有建立映射。 页缺失指的是程序试图访问已经映射在虚拟地址空间中但是没有被加载在物理内存中的一个分页时MMU发出的中断。硬性页缺失物理内存没有对应的物理页页缺失处理器会指示CPU从已经打开的磁盘文件中读取相应内容到物理内存MMU再建立虚拟页和物理页的映射。软性页缺失物理内存有对应的物理页但是没建立映射Page Fault Handler 会指示 MMU 建立相应的虚拟页和物理页的映射关系。 多级页表单级页表时页表开销大引入多级页表。多级页表每个页表与前一个页表关联一般32位系统是二级页表64位系统是四级页表。 TLB转址旁路缓存快表。为了提高虚拟地址到物理地址的转换速度提出快表本质是高速缓存缓存虚拟页号到物理页号的映射。 换页机制一种时间换空间策略物理内存不足时把一些物理页内容放到磁盘中去需要时再读取回来。 换页算法用来选择淘汰哪一个物理页到磁盘的规则。 最佳页面置换算法。优先选择淘汰的页面是以后永不使用的或者是在最长时间内不再被访问的页面。只是理论最优无法实现因为无法预知。先进先出。最简单淘汰最先进入内存的。性能不好经常访问的页面可能会被频繁调入调出。最近最久未使用LRU。记录每个页面上次访问的时间淘汰最久没用的。最少使用。记录页面的访问次数选择而访问频率最低的。时钟页面置换算法。页面组织成一个类似环形的链表结构每个页面有个访问位初始是0访问了是1遍历找0淘汰都是1就清0从头找。近似模拟LRU。
  15. 分页和分段的异同点 相同都是非连续内存地址管理方式。都有地址映射。 不同 页大小固定段大小不固定取决于程序。页是物理单位通常是2的幂次段是逻辑单位根据程序中的数据和代码逻辑结构划分。分段容易有外部内存碎片。分页解决了外部内存碎片可能有内部内存碎片。分页机制对程序没有任何要求程序只需要按照虚拟地址进行访问即可而分段机制需要程序员将程序分为多个段并且显式地使用段寄存器来访问不同的段。
  16. 段页机制是什么 结合了段式管理和页式管理的一种内存管理机制把物理内存先分成若干段每个段又继续分成若干大小相等的页。虚拟内置段号、段内页号、页内地址。 地址翻译时先进行段地址映射再页地址映射。
  17. 什么是局部性原理 数据和指令的访问存在一定的空间和时间上的局部性特点。 时间局部性一个数据项或指令在一段时间内被反复使用。利用时间局部性的缓存。 空间局部性一个数据项或指令在一段时间内与其相邻的数据项或指令被反复使用。利用空间局部性的访问某个页时预先读取相邻的页。 文件系统
  18. 文件系统做了什么 存储管理文件数据空间分配物理存储彼此不冲突。 文件管理创建、删除 、移动、命名、压缩、加密、共享。 目录管理创建、删除、移动、命名。 文件访问控制管理管理不同用户、进程对文件的访问权限。
  19. 软链接和硬链接的区别 硬链接ln创建 通过文件、目录的索引节点号inode建立链接硬链接和源文件的inode节点号相同。作用只有删除了源文件和所有对应的硬链接文件文件才会真正删除给文件设置硬链接可以防止重要文件被误删。限制不能给目录、不存在的文件创建硬链接不能跨越文件系统。|| 每个文件系统有独立的inode表且只维护该文件系统内的inode不同文件系统间创建硬链接会导致inode节点号冲突。 软链接ln -s创建 指向文件路径和源文件的inode节点号不同。作用源文件删除后软连接还存在指向无效的文件路径类似快捷方式。可以给目录、不存在的文件创建软链接可以跨越文件系统。
  20. 提高文件系统性能的方式 优化硬盘。固态硬盘代替机械硬盘。RAID技术通过将多个磁盘组合成一个逻辑磁盘阵列利用 RAID 0 可以提高读写性能RAID 1 提供数据冗余和容错能力RAID 5 在保证一定读写性能的同时提供数据冗余。选择合适的文件系统。ext4 文件系统适用于 Linux 系统具有较高的性能和稳定性NTFS 文件系统适用于 Windows 系统支持大文件和大容量存储。运用缓存。将经常访问的文件数据和元数据缓存在内存中当再次访问时可以直接从缓存中读取减少磁盘 I/O 操作。磁盘合理分区避免磁盘过度使用。
  21. 常见的磁盘调度算法 一次磁盘读写操作的时间由磁盘寻道/寻找时间、延迟时间和传输时间决定。磁盘调度算法可以通过改变到达磁盘请求的处理顺序减少磁盘寻道时间和延迟时间。 先来先服务。没有考虑磁头移动的路径和方向平均寻道时间长容易饥饿后来的请求可能需要长时间等待。 最短寻道时间优先/最佳服务优先。先选择距离当前磁头位置最近的请求进行服务。容易饥饿远离磁头的请求长时间无响应。 扫描算法/电梯算法。沿着一个方向扫描磁盘经过的磁道有请求就处理到达磁盘边界后改变方向。解决了饥饿但是如果磁头从一个方向刚扫描完请求就到了需要等待较长时间。 边扫描边观察算法。对扫描算法进行改进如果磁头移动方向没有别的请求立即改变磁头移动方向。 均衡循环扫描算法。对扫描算法进行改进如果磁头移动方向没有访问请求可以立即返回只需要返回到有磁道访问请求的位置。