这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
这个作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01
学习目标
• 操作系统责任
• 内存与进程管理
• 分时系统
• CPU调度
• 文件、文件系统
• 文件保护
• 磁盘调度
作业正文https://www.cnblogs.com/gly03/p/18559334
教材学习内容总结
一、操作系统的责任
操作系统是计算机系统中的一种系统软件,它负责管理计算机的硬件资源,提供用户与计算机硬件之间的接口,并协调各个程序的运行。其主要职责包括进程管理、内存管理、文件系统管理、设备管理等,作用是实现对计算机的有效管理和资源的合理分配,为用户提供一个友好的使用环境。
二、内存与进程管理
- 内存管理:操作系统负责内存的分配和回收,以及内存的保护和共享。它通过虚拟内存技术,使得进程可以使用的内存空间大于物理内存,从而提高了内存的利用率。
- 进程管理:操作系统对进程进行创建、撤销、调度和控制等操作。它使用进程描述符(PCB)来记录进程的状态和相关信息,并通过进程调度算法(如先来先服务、短作业优先、优先级调度等)来决定哪个进程应该占用CPU。
三、分时系统
分时系统是一种允许多个用户通过终端同时使用计算机的系统。它将CPU的时间划分成若干时间片,轮流分配给各个用户进程使用。这样,每个用户都可以得到及时的响应,从而提高了系统的交互性和吞吐量。
四、CPU调度
CPU调度是操作系统中最基本的一种调度,它从就绪队列中按照一定的算法选择一个进程并将CPU分配给它。调度算法的评价指标包括CPU利用率、系统吞吐量、周转时间、带权周转时间、等待时间和响应时间等。常见的CPU调度算法有先来先服务(FCFS)、短作业优先(SJF)、优先级调度、时间片轮转调度(RR)和多级反馈队列调度算法等。
五、文件、文件系统 - 文件:文件是操作系统中用于存储和管理数据的基本单位。它由文件名、文件内容和文件属性等组成。
- 文件系统:文件系统是操作系统用于明确存储设备(如磁盘)或分区上的文件的方法和数据结构。它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。文件系统的功能包括管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法,实现文件从标识到实际地址的映射,以及文件的控制操作和存取操作等。
六、文件保护
文件保护是确保文件不被未经授权的用户访问或修改的措施。常见的文件保护方法包括: - 访问控制:通过设置文件的访问权限,限制特定用户的访问和操作。
- 加密:使用加密算法对文件进行加密,只有持有相应密钥的用户才能解密和访问文件。
- 备份:定期备份文件,以防止数据丢失或损坏。同时,备份文件也应进行加密和访问控制。
七、磁盘调度
磁盘调度是操作系统中用于决定哪个磁盘请求应该被优先处理的算法。常见的磁盘调度算法有先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描算法(如电梯算法)等。这些算法旨在提高磁盘的访问速度和吞吐量,减少磁盘的寻道时间和旋转延迟。
综上所述,操作系统在内存与进程管理、分时系统、CPU调度、文件与文件系统以及文件保护等方面都承担着重要的责任。了解这些概念有助于深入理解操作系统的原理和工作方式。
指针
指针是一个变量,它存储的是另一个变量的内存地址,而不是数据值本身。通过指针,我们可以直接访问和操作内存中的数据。指针通常用于动态内存分配、函数参数传递(特别是当需要修改传入参数的值时)、数据结构(如链表、树等)的实现等场景。
指针的基本操作包括:
• 声明指针变量
• 分配内存给指针(如使用malloc函数)
• 通过指针访问和修改数据
• 释放指针所指向的内存(如使用free函数)
数组
数组是一种数据结构,用于存储固定大小的相同类型元素的集合。数组名实际上是一个指向数组首元素的常量指针(在C语言中)。通过数组名加上索引,我们可以访问数组中的元素。数组通常用于存储和处理一组相关的数据,如数字、字符等。
数组的基本操作包括:
• 声明数组
• 初始化数组
• 访问和修改数组元素
• 遍历数组
指针与数组的关系 - 数组名作为指针:在C语言中,数组名在大多数情况下会被编译器解释为指向数组首元素的指针。因此,我们可以使用数组名来传递数组给函数,并在函数内部通过指针来访问和修改数组元素。
- 指针数组和数组指针:
o 指针数组是指一个数组,其元素类型为指针。这种数组通常用于存储指向其他数据(如字符串、结构体等)的指针。
o 数组指针则是指一个指针,它指向一个数组。这种指针通常用于动态分配数组或处理多维数组。 - 动态数组:虽然C语言中的数组大小是固定的,但我们可以通过指针和动态内存分配(如malloc和calloc函数)来模拟动态数组的行为。这样,我们就可以在运行时根据需要分配或释放内存,从而改变“数组”的大小。
- 多维数组与指针:在处理多维数组时,我们可以使用指针来遍历和访问数组元素。特别是当处理不规则的多维数组或需要动态分配多维数组时,指针的使用变得尤为重要