20211129《信息安全系统设计与实现》第四章学习笔记

发布时间 2023-10-27 22:34:58作者: 20211128李杰

一、任务内容

自学教材第4章,提交学习笔记(10分)

1. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分)

“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”

核心是要求GPT:“请你以苏格拉底的方式对我进行提问”

然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”

如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”

GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。

2. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)

3.实践过程截图,代码链接(2分)

4.其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)

 

二、知识点归纳以及自己最有收获的内容

一)知识点归纳

1、并行计算导论

并发计算导论是一门介绍并发计算的基础课程,主要涵盖以下内容:

(1)并发计算的基本概念:并发计算是指多个计算任务同时执行的过程。并发计算的基本概念包括并发性、同步、互斥等。

2)进程与线程:进程是具有独立执行流程的程序,线程是进程中的一个执行单元。并发计算中,进程和线程是重要的并发实体。

3)并发编程:并发编程是指编写可以同时执行的程序。并发编程需要考虑并发性、同步和互斥等问题。

4)并发算法:并发算法是指在并发计算环境下设计的算法。并发算法需要考虑并发性、同步和互斥等问题。

5)并发数据结构:并发数据结构是指在并发计算环境下设计的数据结构。并发数据结构需要考虑并发性、同步和互斥等问题。

6)并发性能分析:并发性能分析是指评估并发计算系统的性能。并发性能分析需要考虑并发性、同步和互斥等问题。

7)并发安全性:并发安全性是指保证并发计算系统的正确性和安全性。并发安全性需要考虑并发性、同步和互斥等问题。

8)并发计算应用:并发计算应用包括并发数据库、并发网络、并发操作系统等。并发计算应用需要考虑并发性、同步和互斥等问题。

2、线程

线程是计算机中用于实现并发执行的基本单位,它是进程中的一个独立执行流程。以下是关于线程的主要内容总结:

线程的定义和特点:线程是进程中的一个执行单元,拥有独立的程序计数器、栈和寄存器等资源。与进程相比,线程更轻量级,创建和切换开销较小。

线程的优点:线程的主要优点是提高系统的并发性和响应性。通过多线程并发执行,可以充分利用多核处理器的计算能力,提高程序的执行效率和吞吐量。同时,多线程还可以实现任务的异步执行和响应用户输入,提升系统的交互性能。

线程的状态和生命周期:线程的状态包括新建、就绪、运行、阻塞和终止等。线程的生命周期从创建到终止经历了这些状态的转换过程。线程的状态转换受到调度器的控制,调度器决定了线程何时被调度执行和暂停执行。

线程同步与互斥:由于多个线程共享进程的资源,可能导致竞态条件和数据不一致的问题。为了保证线程之间的正确协作,需要使用同步和互斥机制。常见的同步和互斥机制包括互斥锁、条件变量、信号量和屏障等。

线程调度:线程调度是指操作系统决定哪个线程获得执行的过程。线程调度算法的目标是提高系统的性能和公平性。常见的线程调度算法有先来先服务、时间片轮转、优先级调度和多级反馈队列等。

线程并发编程:线程并发编程是指编写能够正确并高效地处理多线程并发执行的程序。线程并发编程需要考虑竞态条件、死锁、活锁和饥饿等问题,合理使用同步和互斥机制,保证线程之间的协作和资源的安全访问。

3、线程管理函数

线程管理函数是操作系统提供的一组API,用于创建、控制和管理线程。以下是关于线程管理函数的主要内容总结:

线程创建函数:线程创建函数用于创建一个新的线程,并指定线程的执行函数和参数。常见的线程创建函数有pthread_create()和CreateThread()等。

线程终止函数:线程终止函数用于结束一个线程的执行,并释放线程占用的资源。常见的线程终止函数有pthread_exit()和ExitThread()等。

线程等待函数:线程等待函数用于等待一个线程的结束,并获取线程的返回值。常见的线程等待函数有pthread_join()和WaitForSingleObject()等。

线程取消函数:线程取消函数用于取消一个正在运行的线程。常见的线程取消函数有pthread_cancel()和TerminateThread()等。

线程同步函数:线程同步函数用于保证多个线程之间的同步和互斥。常见的线程同步函数有pthread_mutex_lock()、pthread_mutex_unlock()、pthread_cond_wait()和pthread_cond_signal()等。

线程属性函数:线程属性函数用于设置和获取线程的属性,如优先级、栈大小和调度策略等。常见的线程属性函数有pthread_attr_init()、pthread_attr_setdetachstate()和pthread_attr_setschedpolicy()等。

线程局部存储函数:线程局部存储函数用于为每个线程分配独立的存储空间。常见的线程局部存储函数有pthread_key_create()和pthread_setspecific()等。

4、线程同步

    线程同步是指在多线程编程中,为了保证共享资源的正确访问和避免竞态条件(Race Condition)而采取的一种机制。线程同步的目的是确保多个线程按照一定的顺序和规则访问共享资源,避免数据不一致或不确定性的问题。

下面是线程同步的主要内容总结:

临界区(Critical Section):指多个线程并发执行时访问共享资源的代码段。在临界区内,只能有一个线程访问共享资源,其他线程需要等待。临界区的正确使用是线程同步的基础。

互斥锁(Mutex):是一种最常用的线程同步机制。通过对临界区加锁和解锁的操作,保证同一时间只有一个线程可以进入临界区。当一个线程进入临界区后,其他线程需要等待该线程释放锁才能进入。

信号量(Semaphore):是一种更为灵活的线程同步机制。它可以控制多个线程同时访问临界区的数量。信号量维护一个计数器,当计数器大于0时,线程可以进入临界区;当计数器等于0时,线程需要等待其他线程释放信号量。

条件变量(Condition Variable):用于线程之间的等待和通知机制。条件变量可以让线程在某个条件满足时等待,直到其他线程发出通知后再继续执行。条件变量通常与互斥锁一起使用,确保线程在等待和通知过程中的安全性。

读写锁(Read-Write Lock):用于多线程读写共享资源的场景。读写锁允许多个线程同时读取共享资源,但只允许一个线程进行写操作。读写锁的使用可以提高并发读取的效率。

原子操作(Atomic Operation):是一种不可分割的操作,可以保证在多线程环境下对共享变量的操作是原子性的。原子操作通常使用特殊的硬件支持或者加锁机制来实现,避免了竞态条件的问题。

同步工具类(Synchronization Utilities):除了上述基本的线程同步机制外,还有一些高级的同步工具类,如倒计时器(CountDownLatch)、循环屏障(CyclicBarrier)、信号量(Semaphore)等,它们可以更灵活地控制线程的执行顺序和并发度。

 

二)最有收获的内容

 

 

 

 

 

 

 

、问题与解决思路

 

、实践过程