2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab7.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

喜迎 G20 中国 CONTENTS 目 录目 录 1 中国美食 2 中国守护神 美食美食,顾名思义就是美味的食 物,贵的有山珍海味,便宜的 有街边小吃。但是不是所有人 对美食的标准都是一样的,其 实美食是不分贵贱的,只要是 自己喜欢的,就可以称之为美 食。吃前有期待、吃后有回味 的东西。美食遭遇心情的时候,
庄子思想 天地与我并生 万物与我为一 形而上的本体观念 法则、规范、不可思议之事. 庄子作品 极富想象力和浪漫色彩,擅用寓(寄托)言,《史 记》载: “ 其著书十余万言,大抵率寓言也 ” 。 又称《南华经》、《南华真经》 内篇 7 ,外篇 15 ,杂篇 11 《庄子》内容 《逍遥游》《齐物论》《养生主》《人间世》
2007 年 6 月 楚雄师范学院计科系 离 散 数 学 第三章 逻辑代数 ( 上 ) 命题演算.
实验二 Linux 线程及信号灯 一、目的 了解并掌握 Linux 线程及信号灯。 二、要求 1 、了解 Linux 线程与信号灯使用: ( 1 ) Linux 线程 ( 2 ) Linux 信号灯 ( 3 )线程互斥 ( 4 )线程同步.
第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
进 程. “ 程序 ” 和 “ 进程 ” 进程是 OS 对 CPU 执行的程序的运行过程的一种抽象。进程有自 己的生命周期,它由于任务的启动而创建,随着任务的完成(或 终止)而消亡,它所占用的资源也随着进程的终止而释放。 Linux 内核中通常把进程称为任务,每个进程主要通过一个称为进程描 述符(
多线程编程  Linux 下线程 概述  linux 线程 实现. 1 、 Linux 下线程 概述 进程是系统中程序执行和资源分配的基 本单位。每个进程有自己的数据段、代码 段和堆栈段。 线程通常叫做轻型的进程。线程是在共 享内存空间中并发执行的多道执行路径, 他们共享一个进程的资源。 因为线程和进程比起来很小,所以相对.
学分制改革为大学英语教学带来的 挑战与机遇 —— 武汉科技大学交流报告. Contents 武汉科技大学外国语学院简介 一 四 我校学分制改革后大学英语教学改革探索 二 学分制改革为大学英语教学带来的挑战 三 学分制改革为大学英语教学带来的机遇.
因为爱,我们让研修果实更香甜 ——阜阳市临泉县小语1班第三期简报 编辑 葛泽付.
甘肃小吃 文产二班 陶方 羊肉泡 牛肉面 暖锅.
励行“三严三实” 争做新时期“好干部” 专题教育党课 国电内蒙古东胜热电有限公司张殿福 2015年6月.
目 录 探索社会力量参与矛盾化解新模式 创新背景 主要做法 创新亮点 取得成效 杭州市信访局(“12345”)
周刊 总第38期 2013年6月1日 本期编辑:翁茜茜 温州滨海学校教科室主办
第1单元 操作系统概论 第一节 绪论 操作系统定义.
先秦诸子的性情人生 “语文教材微专题系列研究”之一 复旦附中 李郦.
第 2 章 初探 C++.
行程(process).
纳税人学堂课件天地第201509期 高新技术产业税收优惠政策培训 授课老师:周晶 上海市嘉定区国家税务局
Memory Pool ACM Yanqing Peng.
生物化学与养生 化学三班 张震.
香港普通話研習社科技創意小學 周順強老師.
深入贯彻党的十七届四中全会精神 切实提高全区组织工作科学化水平
11 物流仿真技术 11.1物流系统仿真 11.2 物流仿真方法 知识归纳 复习题.
关注教师、学生的应用体验 营造实用、高效的数字校园生态环境
2010年,全世界约有盲人4000万到4500万,低视力者是盲人的3倍,约1.4亿人
中交天津航道局有限公司 党委工作部 陈晓敏 2012年11月5日
2016年6月.
解读《全国文化市场技术与服务平台应用规范》
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
项目办公室.
28 唯一的听众 九年制义务教育课本第十册 Contents 作者:落雪.
第一章 C语言概述.
核探测与核电子学国家重点实验室 报告人:董磊 指导老师:宋克柱
Applied Operating System Concepts
结构化编程 FC OB1 FB SFC 操作系统 SFB OBs 其它
作 業 系 統 第三組 楊育翰 顏瑞霖.
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
Scope & Lifetime 前言 Local Scope Global Functions & Objects
Operating System Concepts 作業系統原理 CHAPTER 2 系統結構 (System Structures)
An Introduction to Computer Science (計算機概論)
进程及进程管理 第4章 进程及进程管理.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab8 1.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab10 1.
Chapter 4 多執行緒 (Multi Thread)
第四章 小技巧.
作業系統 (Operating System)
第3章 認識處理元.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
音乐学科简报 第二期 编辑:范正明 杨芳 安徽省中小学幼儿园教师信息技术应用能力提升培训项目 延时符.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
新个人所得税 相关政策解读.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
汕头大学医学院附属肿瘤医院 医务科 药学部 2014年12月
3.5 线程 问题的提出 进程的引入使操作系统得以完成对并发执行的多道程序动态特征的描述和资源共享的管理,因而进程既是调度的基本单位又是资源分配的基本单位。进程所具有的这两个特点构成了程序并发执行的基础,但同时又导致进程切换过程中由于进程映像过大而带来的时空开销。因此,如果系统中创建的进程过多,或进程切换的频率过高,则会使系统效率下降,限制了并发度的进一步提高。
第7章 進階的同步 觀念與實務.
音乐1 工作坊 学习简报 (第1期) 音乐1坊主: 胡真真 2016年5月.
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
Pthread.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab7.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab11 1.
作業系統概論 授課老師: 羅習五.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.
请添加标题 请添加作者.
Operating System Software School of SCU
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab10 1.
作業系統概論 授課老師: 羅習五.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab2.
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab11 1.
隨機函數.
Presentation transcript:

2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab7

目錄 Contents thread 介紹 Beaglebone thread 範例 Beaglebone 實作 Beaglebone

1-1 thread 介紹 執行緒 (thread) Program 放在二次儲存裝置中,尚沒有被Load到記憶體的一堆Code稱之為「程式」。 Process 已經被Load到記憶體中,任何一行Code隨時會被CPU執行,且其宣告的在記憶體的變數的值會隨著需求而不斷變動。稱之為「程序」。 一個多工作業系統(Multitasking Operating System)可以同時運行多個Process,然而一個CPU一次只能做一件事情,但CPU的數量永遠少於運行中的Process數,因此每個Process使用的時間需要被排程(Scheduling)。 Thread 作業系統能夠進行運算排程的最小單位,被包含在處理序(Process)中,在進代作業系統中,被設計為Process中的實際運作單位。而Thread又由下面兩項組成,Stack(紀錄函數的呼叫路徑,以及這些函數所用到的區域變數)以及目前CPU的狀態。

1-2 thread 介紹 執行緒 (thread) Thread的重點如下: 一個Process可以有多個Thread。 同一個Process內的Thread使用相同的Memory Space,但這些Thread各自擁有其Stack。換句話說,Thread能透過reference存取到相同的object,但是local variable卻是各自獨立的。 現代的作業系統會根據Process的優先權,分別讓各個Process佔據CPU一段時間,以讓各個Process都有機會執行;而Process又會根據Thread的優先權以及已經用掉的CPU時間,在不同的Thread作切換,以讓各個Thread都有機會執行。

thread 範例 2-2 thread 程式碼 gcc thread1.c –lpthread –o thread1

2-1 thread 範例 thread API pthread_create (新增一個 Thread) 標頭檔: #include <pthread.h> 函式宣告: int pthread_create ( pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg ); 傳回值: 傳回 0 代表成功新增,非 0 代表失敗 說明: thread:用來儲存 Thread 的代碼,傳入(pthread_t*)的型態 start_routine:函式指標,指向不定回傳值,不定輸入參數的 Function attr:用來描述 Thread 特性的變數,傳入(pthread_attr_t*)的型態,NULL 代表預設性質 arg:傳入 start_routine 的參入,型態為(void*)

2-1 thread 範例 thread API pthread_join (等待 Thread 執行終止) pthread_exit (結束thread) 標頭檔: 標頭檔: #include <pthread.h> #include <pthread.h> 函式宣告: 函式宣告: int pthread_join ( pthread_t th, void ** thread_return); int pthread_exit ( void * retval); 說明: 說明: th:Thread 的代碼,傳入(pthread_t)的型態,辨別欲等待的 Thread retval:指向傳回值 thread_return:指標的指標因為 Thread 的 Return Type 是(viod*) 傳回值: 傳回 0 代表成功,非 0 代表失敗 傳回值: 傳回 0 代表成功,非 0 代表失敗

異步信號範例 使用signal和`pthread_kill`來終止特定的線程。 可以在線程中使用`pthread_sigmask`來暫時阻止信號。

2-1 thread 範例 thread API sig 函数 pthread_kill 函数 說明: 說明: 標頭檔: 標頭檔: #include <signal.h> #include <signal.h> #include <pthread.h> 函式宣告: 函式宣告: int sigemptyset(sigset_t *set); int sigaddset(sigset_t *set, int signum); int pthread_kill(pthread_t thread, int sig); sigemptyset()用來將參數set信號集初始化並清空。 sigaddset()用來將參數signum代表的信號加入至參數set信號集裡。 向某個線程傳遞一個信號 pthread_t thread:線程號 int sig:信號 傳回值: 傳回值: 執行成功則返回0,如果有錯誤則返回-1。 執行成功則返回0,如果有錯誤則返回-1。

thread 介紹 pthread_kill()函數 該函數其實不是kill線程,而是向線程發送一個signal,向指定ID的線程發送sig信號 第一個參數:要發送信號的線程tid 第二個參數:0是保留信號,用來判斷線程是否還存在,如果int sig的參數不是0,那一定要清楚到底要幹什麼,而且一定要實現線程的信號處理函數,否則,就會影響整個進程。 https://blog.csdn.net/littesss/article/details/71156793 Linux多線程應用中,每個線程可以通過調用  pthread_sigmask() 檢查和更改被阻止的信號。一般情況下,被阻塞的信號將不能中斷此線程的執行。 int pthread_sigmask (int how,const sigset_t *set,sigset_t *oset) 執行函數能夠根據參數如何來實現對信號集的操作,操作主要有三種(how): SIG_BLOCK在進程當前阻塞信號集中添加set指向信號集中的信號, 相當於:mask = mask | set SIG_UNBLOCK如果進程阻塞信號集中包含set指向信號集中的信號,則解除對該信號的阻塞,相當於:mask = mask | ~set SIG_SETMASK更新進程阻塞信號集為set指向的信號集,相當於mask = set

將附件程式碼空白處填上正確的程式碼,並執行結果。 實作 將附件程式碼空白處填上正確的程式碼,並執行結果。 修改線程的屬性 在範例一,我們用pthread_create函數創建了一個線程,在這個線程中,我們使用了默認參數,即將該函數的第二個參數設為NULL。 屬性結構為pthread_attr_t,它同樣在頭檔/usr/include/pthread.h中定義。 屬性值不能直接設置,須使用相關函數進行操作,初始化的函數為pthread_attr_init,這個函數必須在pthread_create函數之前調用。屬性物件主要包括是否綁定、是否分離、堆疊位址、堆疊大小、優先順序。默認的屬性為非綁定、非分離、缺省1M的堆疊、與父進程同樣級別的優先順序。

實作 補充資料: http://zzzaaa12.pixnet.net/blog/post/31958665-%5Bnote%5D-c-thread-programming-in-linux http://blog.xuite.net/tzeng015/twblog/113272158-Linux%E7%B3%BB%E7%B5%B1%E4%B8%8B%E7%9A%84%E5%A4%9A%E7%B7%9A%E7%A8%8B%E7%B7%A8%E7%A8%8B%E5%85%A5%E9%96%80 https://blog.csdn.net/liuguanghui1988/article/details/53607071

Thanks 作業系統實習 Operating Systems