作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13 |
这个作业的目标 | 《C语言程序设计》第12章 |
作业正文 | https://www.cnblogs.com/wchxx/p/18622144 |
**教材学习内容总结
结构体(struct)
1. 结构体的定义
结构体是一种复合数据类型,它允许你将多个不同或相同类型的变量组合成一个单一的数据结构。结构体通过struct
关键字定义。
struct Student {char name[50];int age;float score;
};
2. 创建和初始化结构体变量
你可以创建结构体类型的变量,并使用花括号{}
进行初始化。
struct Student student1 = {"John Doe", 20, 92.5};
3. 访问结构体成员
使用点(.
)操作符来访问结构体的成员。
printf("%s\n", student1.name);
4. 结构体数组
可以创建结构体数组,即存储多个结构体变量的数组。
struct Student students[5];
5. 结构体指针
可以创建指向结构体的指针,并使用箭头(->
)操作符来访问成员。
struct Student *ptr = &student1;
printf("%d\n", ptr->age);
6. 动态内存分配
使用malloc
或calloc
在堆上动态分配结构体。
struct Student *dynamicStudent = malloc(sizeof(struct Student));
7. 结构体与函数
结构体可以作为参数传递给函数,也可以作为函数的返回值。
void printStudent(struct Student s) {printf("Name: %s, Age: %d, Score: %.2f\n", s.name, s.age, s.score);
}struct Student createStudent(char *name, int age, float score) {struct Student s;strcpy(s.name, name);s.age = age;s.score = score;return s;
}
共用体(union)
1. 共用体的定义
共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。共用体通过union
关键字定义。
union Data {int i;float f;char str[20];
};
2. 创建和初始化共用体变量
可以创建共用体类型的变量,并初始化。
union Data data = {12};
3. 访问共用体成员
使用点(.
)操作符来访问共用体的成员。但要注意,共用体的不同成员共享同一块内存区域,所以一次只能存储一个成员的值。
printf("%d\n", data.i);
4. 共用体的大小
共用体的大小等于其最大成员的大小。
printf("Size of union: %lu\n", sizeof(union Data));
5. 共用体与指针
可以创建指向共用体的指针,并使用箭头(->
)操作符来访问成员。
union Data *ptr = &data;
printf("%s\n", ptr->str);
6. 共用体的用途
共用体常用于需要节省空间或处理不同数据类型但占用相同内存大小的情况。
7. 共用体与结构体
共用体可以作为结构体的成员,反之亦然。
struct Mixed {union Data data;int flag;
};struct Mixed mixed;
mixed.flag = 1;
mixed.data.i = 10;
《计算机科学概论》 第10章
1. 操作系统的角色
- 资源管理:操作系统负责管理计算机硬件资源,如CPU、内存、I/O设备等。
- 抽象:操作系统通过提供抽象层(如文件系统、进程概念)简化了程序对硬件的操作。
- 隔离与保护:操作系统确保进程之间相互独立,防止未授权的资源访问。
- 服务提供:操作系统提供系统调用,允许应用程序请求操作系统服务。
- 性能优化:操作系统通过调度算法、内存管理等手段提高系统性能。
2. 进程管理
- 进程概念:进程是程序的执行实例,拥有独立的内存空间和系统资源。
- 进程状态:
- 创建:进程创建时的状态。
- 就绪:等待被调度执行的状态。
- 运行:正在CPU上执行的状态。
- 阻塞:等待某个事件(如I/O操作)完成的状态。
- 终止:进程执行结束的状态。
- 进程控制块(PCB):包含进程状态、优先级、程序计数器、寄存器集合等信息。
- 进程通信:进程间通信机制,如管道、消息队列、共享内存、信号量等。
3. CPU调度
- CPU调度概述:决定哪个进程将获得CPU时间片。
- 调度算法:
- 先来先服务(FCFS):按照请求CPU的顺序进行调度。
- 短作业优先(SJF):优先调度预计运行时间短的进程。
- 优先级调度:根据进程的优先级进行调度。
- 时间片轮转(RR):每个进程轮流使用一小段时间的CPU。
- 多级反馈队列:根据进程的行为将它们分配到不同的队列中,每个队列有不同的调度策略。
4. 内存管理
- 内存管理概述:负责分配、回收、保护和共享内存资源。
- 内存分配:
- 静态分配:在编译时分配内存。
- 动态分配:在程序执行期间分配内存,如使用malloc()和free()。
- 内存保护:确保进程不能访问其他进程的内存空间。
- 虚拟内存:
- 分页:将物理内存划分为固定大小的页,每个页可以独立于其他页加载到内存中。
- 分段:允许程序按逻辑段(如代码段、数据段)划分,每个段可以独立加载。
- 页表和段表:用于将虚拟地址映射到物理地址。
- 内存压缩技术:
- 交换(Swapping):将不常用的页或段从内存交换到磁盘。
- 页替换算法:如最近最少使用(LRU)算法。
基于AI的学习