当前位置:文档之家› 多核实验报告

多核实验报告

多核实验报告
多核实验报告

实验报告

课程名称:多核多线程技术

院(系):信息与控制工程学院

专业班级:计算机科学与技术

姓名:

学号:0906201

指导教师:

2012年11月21日

实验一Windows API多线程编程

本实验分为四个模块;分别为基础练习,临界区实验,事件实验,信号量实验。通过本次实验逐步熟悉和掌握Win32 API多线程编程的语法结构、基本思路和方法。理解API 之间的调用关系,参数的含义。

一、实验目的

1、掌握MS V isual Studio 2010编写编译Win32 API多线程程序的方法;

2、掌握Win 32 API编写多线程程序的语法;

3、掌握Win 32 API编写多线程程序的思路;

4、掌握Win 32多线程API的应用;

5、能解决简单的数据竞争。

二、实验环境

1、Windows XP系统

2、Microsoft Visual Studio 2010

三、相关知识

1、内核对象的概念:由操作系统内核分配的,只能由内核访问的一个内存块,用来供系统和应用程序使用和管理各种系统资源。

2、Windows多线程API的基本管理

线程的创建:

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes,

DWORD dwStackSize,

LPTHREAD_START_ROUTINE lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId);

线程的终止:

VOID ExitThread(DWORD dwExitCode)

BOOL CloseHandle (HANDLE hObject)

线程的挂起与恢复:

DWORD SuspendThread(HANDLE hThread)

DWORD ResumeThread(HANDLE hThread)

线程间的等待:

DWORD WaitForSingleObject(

HANDLE hHandle,

DWORD dwMilliseconds);

DWORD WaitForMultipleObjects (

DWORD nCount,

CONST HANDLE *lpHandles,

BOOL fWaitAll,

DWORD dwMilliseconds);

3、线程间的同步

与临界区相关的API:

void WINAPI InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); void WINAPI EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); void WINAPI DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection);

与事件相关的API:

HANDLE CreateEvent(

LPSECURITY_ATTRIBUTES lpEventAttributes,

BOOL bManualReset,

BOOL bInitialState,

LPCSTR lpName);

DWORD WaitForSingleObject(

HANDLE hHandle,

DWORD dwMilliseconds);

DWORD WaitForMultipleObjects (

DWORD nCount,

CONST HANDLE *lpHandles,

BOOL fWaitAll,

DWORD dwMilliseconds);

BOOL SetEvent(HANDLE event );

BOOL ResetEvent(HANDLE event );

与信号量相关的API:

HANDLE CreateSemaphore(

LPSECURITY_ATTRIBUTES lpEventAttributes,

LONG lSemInitial,

LONG lSemMax,

LPCSTR lpSemName);

DWORD WaitForSingleObject(

HANDLE hHandle,

DWORD dwMilliseconds);

DWORD BOOL ReleaseSemaphore(

HANDLE hSemaphore,

LONG cReleaseCount,

LPLONG lpPreviousCount);

四、实验原理

线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等。一个进程内的所有线程使用同一个地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完后再执行。在多核的机器上,调度程序可将多个线程放到不同的处理器核上去运行,这样可使处理器任务平衡,并提高系统的运行效率。

Windows是一种多任务的操作系统,在Windows的一个进程内包含一个或多个线程。32位Windows环境下的Win32 API提供了多线程应用程序开发所需要的接口函数,而利用VC中提供的标准C库也可以开发多线程应用程序,相应的MFC类库封装了多线程编程的类,用户在开发时可根据应用程序的需要和特点选择相应的工具。

多线程编程在Win32方式下和MFC类库支持下的原理是一致的,进程的主线程在任何需要的时候都可以创建新的线程。当线程执行完后,自动终止线程;当进程结束后,所有的线程都终止。所有活动的线程共享进程的资源,因此,在编程时需要考虑在多个线程访问同一资源时产生冲突的问题。当一个线程正在访问某进程对象,而另一个线程要改变该对象,就可能会产生错误的结果,编程时要解决这个冲突。

五、实验内容

模块一:基础模块

实验步骤:

1、用Microsoft Visual Studio 2005创建控制台项目HelloThreads 。

2、创建HelloThreads.cpp文件,内容如下:

#include "stdafx.h"

#include

#include

const int numThreads = 4;

DWORD WINAPI helloFunc(LPVOID pArg)

{

printf("Hello Thread \n");

return 0;

}

int _tmain(int argc, _TCHAR* argv[])

{

HANDLE hThread[numThreads];

int tNum[10];

for (int i = 0; i < numThreads; i++)

{ tNum[i]=i;

hThread[i] =

CreateThread(NULL, 0, helloFunc, NULL, 0, NULL );

WaitForMultipleObjects(numThreads, hThread, TRUE, INFINITE);

}

return 0;

}

3 点击项目—>HelloThreads属性菜单,按图1-1~图1-4配置项目属性。

图1-1. 项目属性设置– C/C++ Folder – Debug Options

图1-2 项目属性设置– C/C++ Folder – Optimization Options 4、编译执行,输出结果如下:

5、修改代码,使之输出结果可以表示出各线程的输出顺序。

修改代码如下:

#include "stdafx.h"

#include

const int numThreads = 4;

DWORD WINAPI helloFunc(LPVOID pArg)

{

int j = *(int *)pArg;

printf("Hello Thread %d\n",j);

return 0;

}

int _tmain(int argc, _TCHAR* argv[])

{

HANDLE hThread[numThreads];

int tNum[4];

for (int i = 0; i < numThreads; i++)

{ tNum[i]=i;

hThread[i] =

CreateThread(NULL, 0, helloFunc, &tNum[i], 0, NULL );

}

WaitForM ultipleObj ects(numThreads, hThread, TRUE, INFINITE);

return 0;

}

运行结果如下:

模块二:临界区实验

本模块将以数值积分的方法计算Pi的值,采用Win32 API来实现程序的并行化。实验步骤:

1、用Microsoft Visual Studio 2005创建控制台项目WinPi 。

2 、创建WinPi.cpp,内容如下:

#include

#include

#include

static long num_steps=10000000;

double step,pi;

int main()

{

clock_t start,stop;

start=clock();

int i;

double x,sum=0.0;

step=1.0/(double) num_steps;

for (i=0;i

{x=(i+0.5)*step;

sum=sum+4.0/(1.0+x*x);

}

pi=step*sum;

stop=clock();

printf("pi=%12.9f\n",pi);

printf("the time of was %f s\n",((double)(stop-start)/1000.0));

}

3、编译执行, Pi的值为: 3.141592654

The time of calculationwas 11.6560000 seconds

4 、将WinPi.cpp程序修改为Windows Threads并行程序。(1)分析代码中的并行域是:

(2)定义线程执行的函数。

函数原型为DWORD WINAPI 函数名(LPVOID p);

(3)提取并行域代码,作为(2)中定义的函数的函数体(4)生成多个线程调用(3)中的函数

(5)解决线程间的同步和互斥。

5 、采用临界区的方法进行必要的互斥。

6 、编译执行,Pi的值为: 3.1415926

The time of calculationwas 6.2580000 seconds

模块三:事件实验

本实验利用麦凯特尔对数级数估算ln(1 + x), -1 < x <= 1的值。线程被创建时是挂起的状态。这些线程被一个"master"线程唤醒。线程将分别执行自己的任务,"master"线程将等待所有的线程执行完毕后,汇总每一个线程的执行结果。

实验步骤:

1、用Microsoft Visual Studio 2005创建控制台项目ThreadEvent 。

2、创建ThreadEvent.cpp,内容如下:

#include

#include

#include

#include

#include

#define NUMTHREADS 4

#define SERIES_MEMBER_COUNT 100000

HANDLE *threadHandles,masterThreadHandle;

CRITICAL_SECTION countCS;

double *sums;

double x=1.0,res=0.0;

int threadCount=0;

double getMember(int n,double x){

double numerator=1;

for(int i=0;i

numerator=numerator * x;

if(n%2==0)

return(-numerator/n);

return numerator/n;

}

DWORD WINAPI threadProc(LPVOID par){

int threadIndex=*((int *)par);

sums[threadIndex]=0;

for(int i=threadIndex;i

EnterCriticalSection(&countCS);

threadCount++;

LeaveCriticalSection(&countCS);

delete par;

return 0;}

DWORD WINAPI masterthreadProc(LPVOID par){

for(int i=0;i

ResumeThread(threadHandles[i]);

while(threadCount!=NUMTHREADS){}

res=0;

for(int i=0;i

res+=sums[i];

return 0;

}

int main(int argc,CHAR *argv[])

{ clock_t start,stop;

threadHandles=new HANDLE[NUMTHREADS+1];

InitializeCriticalSection(&countCS);

sums=new double[NUMTHREADS];

start=clock();

for(int i=0;i

{ int * threadIdPtr=new int;

* threadIdPtr=i;

threadHandles[i]=CreateThread(NULL,0,threadProc,threadIdPtr,CREATE_SUSPE NDED,NULL);}

threadHandles[NUMTHREADS]=CreateThread(NULL,0,masterThreadProc,NULL, 0,NULL);

printf("Count of ln(1+x) Mercator's series members is %d\n",SERIES_MEMBER_COUNT);

printf("Argument value of x is %f\n",(double)x);

WaitForMultipleObjects(NUMTHREADS+1,threadHandles,TRUE,INFINITE);

stop=clock();

for(int i=0;i

CloseHandle(threadHandles[i]);

delete threadHandles;

DeleteCriticalSection(&countCS);

delete sums;

printf("Result is %10.8f\n",res);

printf("By function call ln(1+%f)=%10.8f\n",x,log(1+x));

printf("The time of calculation was %f seconds\n",((double)(stop-start)/1000.0));

printf("Press any key ...");

getch();

return 0;}

3、编译运行,运行结果如下:

Result is 0.69314218 ;

The time of calculation was 19.557000 seconds 。

模块四:信号量实验

本实验对一个串行程序并行化,以信号量的方式解决数据冲突。代码分析了指定文件中字符串的个数并分别对含有偶数个字符的字符串以及含有奇数个字符的字符串的个数。

实验步骤如下:

1、用MS Visual Studio 2010创建控制台项目SemaphoreS。

2、创建SemaphoreS.cpp,内容如下:

#include

#include

FILE*fd;

int TotalEvenWords=0,TotalOddWords=0,TotalWords=0;

int GetNextLine(FILE*f,char*Line){

if (fgets(Line,132,f)==NULL) if (feof(f)) return EOF;else return 1;} int GetWordAndLetterCount(char * Line){

int WordCount=0,LetterCount=0;

for(int i=0;i<132;i++){

if((Line[i]!=' ')&&(Line[i]!=0)&&(Line[i]!='\n')) LetterCount++;

else{

if(LetterCount!=0){

if(LetterCount%2){

TotalOddWords++;

WordCount++;

LetterCount=0;}

else{

TotalEvenWords++;

WordCount++;

LetterCount=0;}}

if(Line[i]==0)

break;} }

return (WordCount);}

DWORD WINAPI CountWords(){

BOOL bDone=FALSE;

char inLine[132];

while(!bDone){

bDone=(GetNextLine(fd,inLine)==EOF);

if(!bDone){

TotalWords+=GetWordAndLetterCount(inLine); } }

return 0;}

int main()

{fd=fopen("InFiles.txt","r");

CountWords();

fclose(fd);

printf("Total Words=%8d\n\n",TotalWords);

printf("Total Even Words=%7d\nTotal Odd Words=%7d\n",TotalEvenWords,TotalOddWords);

return 0;}

3、确定串行版本项目为启动项,编译执行。

Total Words: ___984719___

Total Even Words: __494314__

Total Odd Words: ___490405__

4、确定并行版本项目为启动项,编译运行,运行结果如下:

Total Words: ___984295___

Total Even Words: __494047__

Total Odd Words: __490107__

5、解决数据冲突进行修正,修正后项目的输出结果为:

Total Words: 984719

Total Even Words: 494314

Total Odd Words: 490405

六、实验总结

此次试验我基本掌握了在Windows多线程编程基础中利用API函数进行多线程编程的基本步骤:

1、使用CreateThread创建线程;

2、SetThreadPriority设置线程优先权;

3、ExitThread在线程的执行过程中终止该线程;

4、TerminateThread线程的外面终止线程。

理解了线程的基本原理及使用的意义,为以后的多线程编程打下良好的基础。

实验二OpenMP多线程编程实验

本实验分为三个模块;分别为基础练习,数值积分计算Pi值,Monte Carlo计算Pi值。通过本次实验逐步熟悉和掌握OpenMP多线程编程的语法结构、基本思路和方法。

一、实验目的

1.掌握Microsoft Visual Studio 编写编译OpenMP程序的方法。

2.掌握OpenMP编写多线程程序的语法。

3.掌握OpenMP编写多线程程序的思路。

4.能解决简单的数据竞争。

5.了解数值积分计算和Monte Carlo计算

二、实验环境

1、Windows XP系统

2、Microsoft Visual Studio 2010

三、相关知识

OpenMP编程模型提供平台无关的编译指导,运行时库函数及环境变量,来显示的指导编译器对程序进行并行化。

线程的创建:

#pragma omp parallel [clause[clause]…]

{

. //Code to run in Parallel goes here

}

针对for循环的并行化:

#pragma omp parallel for [clause[clause]…]

for( xxx ; yyy ; zzz)

{

// Loop body

}

可用于解决数据竞争的编译指导子句和API。

使变量私有化的子句:private,lastprivate,firstprivate 。

使变量共享的子句:shared。

用于规约的子句:reduction。

用于解决线程同步的方法有互斥锁和事件同步机制两类。其中互斥锁包括:critical,atomic,由OpenMP库函数提供的同步API;事件同步机制包括:隐式同步栅障,取消栅障的nowait子句,显式同步栅障的barrier子句以及sections,master,single 等子句。

用于线程调度优化的编译指导:#pragma omp for schedule(kind [, chunksize]),其中kind表示采用的调度类型,可选值包括:static、dynamic、

guided和runtime四种子句。

OpenMP的常用库函数:

int omp_get_num_procs(void)

int omp_get_num_threads(void)

int omp_get_thread_num(void)

int omp_set_num_threads(int NumThreads)

OpenMP并行化的开销,负载平衡,线程同步开销等方面都是影响执行性能的原因。

四、实验原理

OpenMP应用编程接口API是在共享存储体系结构上的一个编程模型,其包含:编译制导(Compiler Directive)、运行库例程(Runtime Library)和环境变量(Environment Variables) 三大部分,并支持增量并行化(Incremental Parallelization),用于实现并行性运算的优化解决方法。

OpenMP 基于 fork-join 的编程模式而设计。OpenMP 程序起初以一条单线程的形式开始运行。如果希望在程序中利用并行,那么就需将额外的线程进行分支,以创建线程组。这些线程在称为“并行区域”的代码区域内并行执行。在并行区域末尾,将等待所有线程全部完成工作,并将其重新结合在一起。那时,最初线程或“主”线程将继续执行,直至遇到下一个并行区域(或程序结束)。

OpenMP 的语言结构根据编译器指示而定义,可为编译器布置任务,以实施理想的并行。在 C 和 C++ 中,这些指示根据制导语句来定义。

OpenMP 制导语句在任何情况下的形式都相同:

#pragma omp construct_name one_or_more_clauses

其中“construct_name”规定了希望执行的并行动作,而“clauses”则对该动作进行修改,或对线程所见的数据环境进行控制。

OpenMP 是一种显式的并行编程语言。一旦线程创建,或者工作已经映射到该线程上,那么必须对希望执行的动作加以详述。因此,即使是 OpenMP 这样简单的 API 也有诸多结构和子句需要学习。所幸的是,仅利用整个 OpenMP 语言的一小部分子集,便可完成大量上述工作。

可利用“parallel”结构在 OpenMP 中创建线程。

#pragma omp parallel

{

A block of statements

}

独自使用时(没有修改任何子句),程序可创建出一系列线程供运行时环境选择(这些线程通常与处理器或内核的数量相等)。每条线程都将根据并行制导语句来执行语句块。该语句块可以是 C 中的任意合法语句组,但是唯一例外的是:不能分支到并行语句块之中或之外。如果线程要全面执行语句组,并且该程序的继发行为还要有意义,那么便不能随意将线程分支到并行区域内的结构之中或之外。这是 OpenMP 的一项公共约束。将这种缺乏某些分支的语句块称为“结构块”。

可以令所有线程执行相同的语句,从而进行大量的并行编程。但是要体验 OpenMP 的全部功能,要做的就不止这些。需要在多条线程之间共享执行语句集的工作。这种方式称为“工作共享”。最常见的工作分享结构是循环结构,在 C 中即为“for”循环#pragma omp for

但是,这一结构仅对具有规范形式的简单循环起作用

for(i=lower_limit; i

“for”结构执行循环的迭代,并将其打包至那些利用并行结构创建的早期线程组中。循环极限和循环索引 (inc_exp) 的递增表达式需在编译时完全确定,并且这些符号中使用的任何恒量都必须在线程组中保持相同。系统需要得出循环的迭代数量,然后将其映射到能够分发至线程组的集上。如果所有线程均计算相同的索引集,那么上述工作只有通过持续稳定的方式才能实现。

请注意,“for”结构并不能创建线程,只能借助并行结构来做到这点。为了简捷起见,可以将并行结构和“for”结构放在一个制导语句中。

#pragma omp parallel for

此举可创建一个线程组,以便执行紧随其后的循环迭代。

该循环迭代必须是独立的,因此不论迭代的执行顺序如何,或是究竟由哪些线程执行循环的哪些迭代部分,循环结果都将相同。如果一条线程写入变量,另一条线程读取变量,那么将产生循环传递相关性 (loop-carried dependence),程序也将生成错误的结果。编程人员必须仔细分析循环体,以确保没有任何循环传递相关性的发生。在很多情况下,循环传递相关性来源于保存中间结果(用于指定的循环迭代)的变量。在此情况下,可以通过声明每条线程都将具有自己的变量值,以除去循环传递相关性。这可通过私有子句来实现。例如,如果循环使用名为“tmp”的变量来保存临时值,那么可将以下子句添加到 OpenMP 结构中,这样它便可用于循环体内部,而不会造成任何循环传递相关性。

private(tmp)

另一种常见情况是循环内出现变量,并用于从每个迭代中累积数值。例如,可以利用循环将某项计算的所有结果进行求和,得出一个数值。这在并行编程中十分常见,通常被称为“规约”。在 OpenMP 中,规约子句表示为

reduction(+:sum)

同私有子句一样,该子句可添加到 OpenMP 结构中,用以提示编译器等待规约。这时,程序便会创建一个临时私有变量,以便为每条线程计算累积操作的部分结果。当该结构运行到最后时,每条线程的值将结合起来产生最终答案。用于该规约的操作在子句中同样进行了详细说明。在这种情况下,此操作为“+”。根据对遭受质疑的数学操作进行特性识别,OpenMP可定义用于规约的私有变量值。例如,对于“+”来说,该值为零。

当然,OpenMP 还有更为复杂的情况,但是借助这两个结构和两个子句,便能够解释如何并行π程序。

五、实验内容

模块一:基础模块

实验例程路径:\code\OpenMP\Helloworlds\

1、关闭病毒扫描和监控程序;

2、采用Microsoft DevStudio工具新建工程,并加入实验程序文件:Helloworlds.c;

3、编译,运行程序并记录实验结果;

4、在源程序代码中的找到主程序体:

printf("Hello World\n");

for(i=0;i<6;i++)

printf("Iter:%d\n",i);;

加上OpenMP并行处理结构:

#pragma omp parallel

{

}

运行程序,记录并分析结果;

5、采用/Qopenmp重新编译程序,运行程序,记录并分析结果;

6、设定Openmp线程数,运行程序,记录并分析结果:

C:\>Set OMP_NUM_THREADS=2;

7、使用Intel C++编译器重新编译,记录并比较结果有何不同;

C:\>icl /Qopenmp HelloWorlds.c;

8、分别运行程序多次,观测实验结果,并记录,分析每次的结果是否相同,为什

么?

模块二:积分方法求PI值的并行处理化算法

实验例程路径:\code\OpenMP\ pi\

1、关闭病毒扫描和监控程序;

2、采用Microsoft DevStudio工具打开实验程序文件:pi.sln;

3、编译,运行程序并记录实验结果;

java多线程实验报告

java多线程实验报告 篇一:西北农林科技大学java多线程实验报告 实验7 多线程 1.实验目的 (1) 掌握Java多线程的概念和实现方法 (2) 掌握Java多线程的同步问题 2.实验内容 任务一:火车售票 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。程序运行结果见左图。 打开Eclipse Tickets.java public class Ticket extends Thread { int ticket =1000; String name =""; public void run(){ while(true){synchronized(name){ if(ticket "第" + Thread.currentThread().getName()+ "售票点卖出了第" + ticket-- + "张票"); } } } }} try{ } catch(InterruptedException e){ }

Thread.sleep(100); Test.java public class Test { } public static void main(String args[]){} Ticket t = new Ticket(); new Thread(t,"1").start(); new Thread(t,"2").start(); new Thread(t,"3").start(); new Thread(t,"4").start(); new Thread(t,"5").start(); new Thread(t,"6").start(); new Thread(t,"7").start(); new Thread(t,"8").start(); new Thread(t,"9").start(); new Thread(t,"10").start(); 任务二:银行存款 假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。 程序如下: classCBank { private static int sum=0; public static void add(int n){ inttmp=sum; tmp=tmp+n;// 累加汇款总额 try{ Thread.sleep((int)(10000*Math.random())); //

美国疯狂核试验

核试爆地址:内华达测试基地(Nevada Test Site,NTS) 斯图科斯核试爆(Stokes Test) 核试爆时间:1957年8月7日 核试爆当量:19千吨TNT 核试爆方式:空中 二战后,为了称霸世界,美苏进行了长期的核军备竞赛。 为了摆脱核战争的阴影、维护世界和平,国际社会和各国人民普遍要求全面禁止核试验并最终彻底销毁核武器。在核禁试方面,1963年美苏达成了《限制核试验条约》,禁止在大气层、外层空间和水下进行核试验。但是,地下核试验没有被禁止,据统计,从上世纪40年代到90年代,美国共进行了上千次核试验。本组图片也只覆盖了美国在二战后50年代到1963年美苏达成《限制核试验条约》前疯狂大量核试验中的几十次而已。

魔昊克核试爆(MO HAW K ) 核试爆时间:1956年7月2日 核试爆地址:西太平洋马绍尔群岛西北端埃尼威托克环礁(Eniwetok) 核试爆当量:350千吨TNT 注释:马绍尔群岛在二战后一段时期由美国托管,从上世纪40年代到90年代,美国仅在马绍尔群岛就进行了67次核试验,而23次在比基尼环礁进行。在1954年的一年内,马绍尔群岛所属岛屿上就接连爆炸了三颗1000万吨以上当量的核武器。这些核爆炸的放射性散落物飘落到了群岛的其他地区,使许多人都出现了皮肤烧伤、头发脱落、恶心、呕吐等现象,甲状腺疾病和恶性肿瘤也成为当地的常见病。

德核试爆(HOO D)核试爆时间:1957年7月5日 核试爆地址:内华达测试基地(Nevada Test Site,NTS) 核试爆当量:74千吨TNT 核试爆方式:空中

道普勒核试爆(DOPPLER)核试爆时间:1957年8月23日 核试爆地址:内华达测试基地(Nevada Test Site,NTS) 核试爆当量:11千吨TNT 核试爆方式:空中(457米)

蚕豆根尖细胞微核实验报告

利用蚕豆根细胞微核技术检测洗发水的毒性 09生物技术宁伟王晓刚太红桥刘经源 摘要微核(micronucleus,MCN)是真核生物细胞经各种理化因子作用后引起染色体畸变,在间期细胞中的一种表现形式。在细胞间期,微核呈圆形或椭圆形,游离于主核之外,大小应在主核1/3~1/20,染色与主核一样或稍浅。一般认为微核是由无着丝粒的染色体断片或落后染色体,在分裂末期不能进入主核,便形成了主核之外的核块。当子细胞进入下一次分裂间期时,它们便浓缩成主核之外的小核,即微核。[1] 蚕豆根尖细胞微核试验(Micronucleustest,MC-NT)技术是一种以染色体断裂及纺锤丝损伤为测试终点的植物微核检测方法。它是一种应用于监测环境致突变物对人体和其他生物体的遗传物质产生危害的技术,并从细胞遗传学水平上探讨植物遗传物质的改变状况与环境污染,也可以检测淡水环境的质量。[2] 关键词蚕豆根尖微核洗发水千分率 蚕豆是一种很好的细胞遗传学研究材料。它的染色体为六对相当大的染色体,而且根尖含有较多的分裂相细胞,非常适合显微观察。目前,蚕豆根尖微核技术在环境致突变性检测/监测方面已经形成了一套完整的体系。它的可靠性和灵敏性较高,且本底较低,这对于一种致突变性检测方法是十分重要的。此外,它的检测物谱较广。目前多数学者认为,在镜检细胞微核时,应按下列标准计数微核:

(1)凡主核大小1/3以下,与主核分离的小核; (2)小核的着色与主核相当或稍浅; (3)小核形态可为圆形,不规则等。[3] 1. 实验目的 掌握蚕豆根尖细胞微核检测技术的一般方法。并利用蚕豆根尖细胞微核检测技术对洗发水的毒性状况给出客观的评价,同时表明蚕豆根尖细胞MCN对胁迫很敏感,蚕豆根尖微核技术可用于洗漱用品的安全监测。 2. 材料与方法 2.1实验材料 蚕豆种子、洗发水、显微镜、镊子、培养皿、剪刀、载玻片、盖玻片、烧杯、Carnoys固定液、盐酸酒精解离液、改良苯酚品红染液、NaN3等。 2.2 毒液配制 选取所测洗发水,按平时所用比例与水混合均匀。 2.3实验方法 2.3.1 浸种 择饱满、均匀的20粒种子,洗净后用蒸馏水常规浸种24h,此期至少换水2次;待种子充分吸胀后,移入干净的培养皿内培养。2.3.2 催芽 种子吸胀后,保持湿度,在室温下催芽2天。 2.3.3 被检测液处理根尖 各取10粒,分别用蒸馏水(自来水)和毒液培养种子1天。

进程的同步实验报告汇总

操作系统 实验报告 哈尔滨工程大学 计算机科学与技术学院

一、实验概述 1. 实验名称 进程的同步 2. 实验目的 ⑴使用EOS的信号量,编程解决生产者 消费者问题,理解进程同步的意义。 ⑵调试跟踪EOS信号量的工作过程,理解进程同步的原理。 ⑶修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。 3. 实验类型 验证+设计 4. 实验内容 ⑴准备实验 ⑵使用EOS的信号量解决生产者-消费者问题 ⑶调试EOS信号量的工作过程 ①创建信号量 ②等待释放信号量 ③等待信号量(不阻塞) ④释放信号量(不唤醒) ⑤等待信号量(阻塞) ⑥释放信号量(唤醒) ⑷修改EOS的信号量算法 二、实验环境 WindowsXP + EOS集成实验环境 三、实验过程 1. 设计思路和流程图

图4-1.整体试验流程图

图4-2.Main 函数流程图、生产者消费、消费者流程图 2. 算法实现 3. 需要解决的问题及解答 (1). 思考在ps/semaphore.c 文件内的PsWaitForSemaphore 和PsReleaseSemaphore 函数中,为什么要使用原子操作?

答:在执行等待信号量和释放信号量的时候,是不允许cpu响应外部中断的,如果此时cpu响应了外部中断,会产生不可预料的结果,无法正常完成原子操作。 (2). 绘制ps/semaphore.c文件内PsWaitForSemaphore和PsReleaseSemaphore函数的流程图。 (3).P143生产者在生产了13号产品后本来要继续生产14号产品,可此时生产者为什么必须等待消费者消费了4号产品后,才能生产14号产品呢?生产者和消费者是怎样使用同步对象来实现该同步过程的呢? 答:这是因为临界资源的限制。临界资源就像产品仓库,只有“产品仓库”空闲生产者才能生产东西,有权向里面放东西。所以它必须等到消费者,取走产品,“产品空间”(临界资源)空闲时,才继续生产14号产品。 (4). 根据本实验3.3.2节中设置断点和调试的方法,自己设计一个类似的调试方案来验证消费者线程在消费24号产品时会被阻塞,直到生产者线程生产了24号产品后,消费者线程才被唤醒并继续执行的过程。 答:可以按照下面的步骤进行调试 (1) 删除所有的断点。 (2) 按F5启动调试。OS Lab会首先弹出一个调试异常对话框。 (3) 在调试异常对话框中选择“是”,调试会中断。 (4) 在Consumer函数中等待Full信号量的代码行(第173行)WaitForSingleObject(FullSemaphoreHandle, INFINITE); 添加一个断点。 (5) 在“断点”窗口(按Alt+F9打开)中此断点的名称上点击右键。 (6) 在弹出的快捷菜单中选择“条件”。 (7) 在“断点条件”对话框(按F1获得帮助)的表达式编辑框中,输入表达式“i == 24”。 (8) 点击“断点条件”对话框中的“确定”按钮。 (9) 按F5继续调试。只有当消费者线程尝试消费24号产品时才会在该条件断点处中断。 4. 主要数据结构、实现代码及其说明 修改PsWaitForSemaphore函数 if (Semaphore->Count>0){ Semaphore->Count--; flag=STATUS_SUCCESS; }//如果信号量大于零,说明尚有资源,可以为线程分配 else flag=PspWait(&Semaphore->WaitListHead, Milliseconds); KeEnableInterrupts(IntState); // 原子操作完成,恢复中断。 return flag; }//否则,说明资源数量不够,不能再为线程分配资源,因此要使线程等待 修改PsReleaseSemaphore函数 if (Semaphore->Count + ReleaseCount > Semaphore->MaximumCount) {

小鼠骨髓的综合性实验报告

小鼠骨髓的综合性实验报告 YUNNAN NORMAL UN I VER SITY 本科学生综合性实验报告 学号姓名 学院专业、班级 实验课程名称: 教师及职称 开课学期至学年学期 填报时间年月曰 云南师范大学教务处编印 一(实验设计方案 实验名称实验序号 实验室实验时间 一、实验目的 1、学习并掌握小鼠骨髓细胞染色体的制备方法。 2、观察小鼠染色体的形态特征,统计细胞的染色体数目。 3、了解微核发生的机制; 4、掌握微核实验的一般程序和实践意义; 5、掌握对实验动物进行药物处理的一般程序; 6掌握进行实验设计的一般程序和规则,并锻炼实践能力

二、实验原理、实验流程或装置示意图 1、骨髓细胞具有高度的分裂增殖能力。因此可以直接得到中期细胞而不必象 血淋巴细胞或组织那样要经过体外培养。经秋水仙素处理后,分裂增殖中的骨髓细胞由于纺缍体的形成受到抑制,染色体不能正常趋向两极而使之停留于中期,同时染色体缩短,轮廓清晰,把收获的细胞进行低渗,固定处理,使细胞处于膨胀状态,再将细胞悬液滴在载片上,使细胞破裂,染色体散开,染色后即可观察到染色体。 2、微核(Micronucleus): 染色单体或染色体的无着丝点断片,或因纺锤体受损而丢失的整个染色体,在细胞分裂后期,仍然遗留在细胞质中。末期之后,单独形成一个或几个规则的次核,被包含在子细胞的胞质内,因比主核小,故称为微核。凡能使染色体发生断裂或使染色体和纺锤体联结损伤的化学物,都可用微核试验来检测。各种类型的骨髓细胞都可形成微核,但有核细胞的胞质少,微核与正常核叶及核的突起难以鉴别。 嗜多染红细胞是分裂后期的红细胞由幼年发展为成熟红细胞的一个阶段,此时红细胞的主核已排出,因胞质内含有核糖体,姬姆萨染色呈灰蓝色,成熟红细胞的核糖体已消失,被染成淡桔红色。骨髓中嗜多染红细胞数量充足,微核容易辨认,而且微核自发率低,因此,骨髓中嗜多染红细胞成为微核试验的首选细胞群。 三、实验设备及材料 1、材料:小白鼠(2n=40) 2、器具: 注射器( 1 ml ,5ml 各一支)、托盘、解剖剪、镊子、吸管、离心管、离心机、载片、滤纸、白纱布小块等。 3、药品: 0.15mg/ml 秋水仙素,1%柠檬酸三钠,固定液(3份甲醇,1份冰乙酸,临用时现配),Giemsa染液,2.2%柠檬酸钠,0.01M磷酸缓冲液(PBS) pH6.8。

回忆首次核试验的文章有很多

(回忆首次核试验的文章有很多,其中有些文章写的真实而又精彩。我的文笔很差,那么就凭我的记忆,来个实话实说,随便 想到哪写到哪吧。) 四十四年前的10月16日,作为一名我国首次核试验的参加者,每年自己的生日可能会忘掉,但唯10.16这一天,却从来没有忘记过,我想大家都是如此吧! 能亲自参加首次核试验,确实是一生中的最大荣幸。首次核试验进场人数,控制的非常严格,要求是安岗位定人,“一个萝卜一个坑”,多一个也不准。我们21所是“核试验基地研究所”,也是核试验场内的主力军,承担着90%以上的测试任务。1964年初,全所有400多名技术人员,而这次进场的只有200人左右;五室(理论研究室)当时有62个人,也只批准了27人进场,连我们室的元老王懋江、蒋伯诚同志也都被留在了北京。唯我们放射性沉降组最运气,邹德山、杨成林、朱明发、刘贵荣、王可定和高连科,六个人要全部上阵。还记得在临出发前,我的痔疮病突然发作而不得不卧床休息,室里有一位同志开玩笑地说:“大高,看来这次任务你是参加不了啦!”但第二天我还是随队按时出发了。

首次核试验的保密之事 我们是六月进场的,其实美国早在几个月前就已察觉到中国即将要进行核试验,(这些事现在都已公开了)。我记得,那时经常有美国的间谍卫星和U-2飞机从场区上空飞过。102米高,76吨重的大铁塔立在戈壁滩上、数百顶帐篷的突然出现、上千辆汽车及五千多人员的频繁活动,美国能不知道吗?当然,他知道归知道,保密教育还是要天天讲、天天抓。但是,也不像有些人说的那么玄乎,似乎我们一点自由都没有了。比如,我看过公安部一同志的回忆录,他写道:“进入核试验期间,一律禁止私人通信。”其实并非完全如此。在场区一次大会上,张爱萍副总长就通信的保密问题做了三点指示:“一、无事不写信;二、有事少写信;三、写信不泄密。”当然,21所也采取了相应的措施,大家写信时,信封上仍以北京通县为发信地址,21所每周派通信员回北京一次送、取信件。五室申江河指导员则建议大家写好信后,最好找别的同志帮助看看,(当然是自愿的了)“把把关”。我记得桑凤嶠、朱明发等同志写给爱人的信都让我帮看过,看什么看,难道这些老同志还要别人把关吗?

进程(线程)的同步与互斥实验报告

操作系统实验报告 课程名称操作系统实验名称进程(线程)的同步与互斥成绩 学生姓名作业君专业软件工程班级、学号 同组者姓名无实验日期2020 一、实验题目:进程(线程)的同步与互斥 二、实验目的: 自行编制模拟程序,通过形象化的状态显示,加深理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。1.掌握基本的同步与互斥算法,理解生产者消费者模型。 2.学习使用Windows中基本的同步对象,掌握相关API的使用方法。 3.了解Windows中多线程的并发执行机制,实现进程的同步与互斥 三、实验内容与要求: 1.实验内容 以生产者/消费者模型为依据,在Windows 环境下创建一个控制台进程,在该进程中创建n个线程模拟生产者和消费者,实现进程(线程)的同步与互斥。 2.实验要求 学习并理解生产者/消费者模型及其同步/互斥规则; 学习了解Windows同步对象及其特性; 熟悉实验环境,掌握相关API的使用方法; 设计程序,实现生产者/消费者进程(线程)的同步与互斥; 四、算法描述(含数据结构定义)或流程图 #include #include #include #include #include #include using namespace std;

#define MAX_THREAD_NUM 64 //最大线程数 #define INTE_PER_SEC 1000 //延迟时间的毫秒值 const int SIZE_OF_BUFFER = 10; //缓冲区长度 int ProductID = 0; //产品号 int ConsumeID = 0; //将被消耗的产品号 int in = 0; //产品进缓冲区时的缓冲区下标 int out = 0; //产品出缓冲区时的缓冲区下标 bool running = true; //判断程序能否继续执行的逻辑值 int g_buffer[SIZE_OF_BUFFER]; //缓冲区是个循环队列 HANDLE g_hMutex; //公有信号量,用于线程间的互斥HANDLE g_hFullSemaphore; //生产者的私有信号量,当缓冲区满时迫使生产者等待 HANDLE g_hEmptySemaphore; //消费者的私有信号量,当缓冲区空时迫使消费者等待 //定义一个结构体用于存储线程的信息 struct ThreadInfo { int serial; //线程号 char entity; //线程类别(生产者或消费者) double delay; //等待时间 double persist; //操作时间 }; //生产者 void Producer(void* p) { //定义变量用于存储当前线程的信息 DWORD m_delay; DWORD m_persist; int m_serial; //从参数中获得信息 m_serial = ((ThreadInfo*)(p))->serial; m_delay = (DWORD)(((ThreadInfo*)(p))->delay * INTE_PER_SEC); m_persist = (DWORD)(((ThreadInfo*)(p))->persist * INTE_PER_SEC); while (running) { //P操作 cout << "生产者线程 " << m_serial << " 请求生产." << endl; WaitForSingleObject(g_hEmptySemaphore, INFINITE);

《全面禁止核试验条约》全文

《全面禁止核试验条约》全文 XXXX当地时间9月23日,美国纽约联合国安理会就一项关于《全面禁止核试验条约》的决议进行了投票。纽约当地时间23日,联合国安理会投票通过了一项支持《全面禁止核试验条约》的决议草案。 联合国大会于1996年通过了《全面禁止核试验条约》,但该条约未能生效,因为包括美国在内的一系列国家尚未签署或批准该条约。包括俄罗斯、英国和法国在内的所有欧洲国家都批准了《全面禁止核试验条约》。在XXXX,奥巴马宣布了争取XXXX批准该条约的计划。 主要原件 《条约》的宗旨和目标是全面禁止核武器试爆和任何其他核爆炸,有效推动全面防止核武器扩散和核裁军进程,从而增进国际和平与安全。该条约由序言、 17条款、 2附件和1项议定书组成。其主要内容包括: (1) 缔约国承诺不进行任何核武器试验爆炸或任何其他导致以任何方式鼓励或参与的核爆炸,并承诺在其管辖或控制下的任何地方禁止和防止任何此类核爆炸。 (2) 全面禁止核试验条约组织在维也纳成立。所有缔约国都是条约组织的成员。组织结构包括缔约国大会、执行理事会和技术秘书处。 (3) 为了确保遵守《条约》,建立了以国际监测系统、协商和澄清、

现场视察和建立信任措施为主体的国际核查机制。国际监测系统由全球监测网络组成,如地震、水声、放射性核素。建立信任措施主要是指缔约国自愿宣布大规模化学爆炸。协商和澄清是指缔约国澄清和解决因遵约问题而产生的疑问。现场检查是指对可疑事件进行现场核查,以澄清是否发生了违反合同的核爆炸。 (4) 根据《条约》的规定,《条约》将在《条约》所列的所有44个有核能力的国家交存批准书后180天生效。这44个国家是美国、俄罗斯、英国、法国、和印度、巴基斯坦、以色列和其他“核门槛”国家和其他有核能力的国家。 (5) 该条约将无限期有效。《条约》生效十年后,将召开一次审查会议,审议如果缔约国提出请求,是否允许为和平目的进行地下核爆炸。 (6) 如果一个缔约国断定与本条约主题有关的非常事件危及其最高利益,它有权通过行使国家主权等方式退出条约。 1999年10月,联合国在维也纳举行了促进《全面禁止核试验条约》生效的第一次会议。 11月,XXXX在纽约举行了第二次全面禁止核试验条约生效会议。 9月,XXXX在维也纳举行了第三次促进全面禁止核试验条约生效会议。 《全面禁止核试验条约》[全文]

实验四 同步与互斥 Linux实验报告

实验四同步与互斥 【实验目的和要求】 1、掌握进程(线程)的同步与互斥。 2、掌握生产者消费者问题的实现方法。 3、掌握多线程编程方法。 【实验内容】 实现生产者消费者问题 1、有一个仓库,生产者负责生产产品,并放入仓库,消费者会从仓库中拿走产品(消费)。 2、仓库中每次只能入一个(生产者或消费者)。 3、仓库中可存放产品的数量最多10个,当仓库放满时,生产者不能再放入产品。 4、当仓库空时,消费者不能从中取出产品。 5、生产、消费速度不同。 【实验原理】 1、信号量mutex提供对缓冲池访问的互斥要求并初始化为1,信号量empty和 full分别用来表示空缓冲项和满缓冲项的个数,信号量empty初始化为n,信号量full初始化为0。 2、定义如下结构及数据: 定义缓冲区内的数据类型:typedef int buffer_item; 缓冲区:buffer_item buffer[BUFFER_SIZE];

对缓冲区操作的变量:int in,out; 信号量mutex提供了对缓冲池访问的互斥要求:pthread_mutex_t mutex; 信号量empty和full分别表示空缓冲顶和满缓冲顶的个数:sem_t empty,full; 可以设定生产者的生产速度及消费者的消费速度:int pro_speed,con_speed; 对缓冲区操作的自增函数:#define inc(k) if(k < BUFFER_SIZE) k = k+1;else k=0 3、并定义了如下实现问题的函数模块: 将生产的产品放入缓冲区: int insert_item(buffer_item item) 从缓冲区内移走一个产品: int remove_item(buffer_item *item) 生产者进程:void *producer(void *param) 消费者进程:void *consumer(void *param) 生产者结构进程消费者结构进程 【程序代码】 //sx.c #include

邓稼先与一次核试验事故图

邓稼先与一次核试验事故 有很多关于邓稼先的传记有很多关于邓稼先的传记、 、纪念文章和影视作品都提到了他的英年早逝与一次核试验事故有关,也就是的英年早逝与一次核试验事故有关,也就是197919791979年年9月1313日 日的那次空投核试验,降落伞未打开,核弹落地未爆炸。 然而前不久,网上有一篇博文提出了然而前不久,网上有一篇博文提出了““异议异议””,作者是当年 2121基地参试人员。 基地参试人员。20012001年第年第年第7 7期《读者》上转载了一篇关于核试验的文章《段子《段子··房东房东··不被消化掉的人不被消化掉的人》》。作者在。作者在““段子段子” ”里写的是两弹元勋邓稼先在是两弹元勋邓稼先在197919791979年秋季进行的那 年秋季进行的那次失败的氢弹试验的验的““英雄事迹英雄事迹””。那一次试验任务,核弹头折戟沉砂,没有炸响。当时我们火箭取样组在一个工号里等着打火箭有炸响。当时我们火箭取样组在一个工号里等着打火箭, ,听到了到了““脱钩脱钩””信号之后信号之后,,却一直没有下文却一直没有下文,,心急惶惶心急惶惶, ,又不敢动。过了半个小时之后,方接到指挥部敢动。过了半个小时之后,方接到指挥部““撤退撤退””的命令的命令。 。当晚我们才知道了究竟发生了什么事情。在这篇文章中当晚我们才知道了究竟发生了什么事情。在这篇文章中,,作者是这样写的: 在一次原子弹爆炸失败后在一次原子弹爆炸失败后,,几个单位在推卸责任几个单位在推卸责任。 。为了找到真正的原因,必须有人到那颗原子弹摔碎的地方去找到真正的原因,必须有人到那颗原子弹摔碎的地方去, ,找回一些重要部件。邓稼先说回一些重要部件。邓稼先说::“谁也别去,我进去吧。你们 去了也找不到,白受污染。我做的,我知道去了也找不到,白受污染。我做的,我知道。。”他一个人走 进那片地区,那片意味着死亡之地。他很快找到了核弹头进那片地区,那片意味着死亡之地。他很快找到了核弹头, ,用手把它捧着,走了出来。最后证明是降落伞的问题。

微核试验报告

.. 本科学生综合性实验报告 学号 074120267 姓 名 吴永文 学院 生科院 专业、班级 07级应生B 班 实验课程名称 遗传学实验 教师及职称 曹 能 (副 教 授) 开课学期 2008 至 2009 学年 下 学期 填报时间 2009 年 6 月 5 日 云南师范大学教务处编印

一.实验设计方案

二.实验报告

.. 2.对实验现象、实验结果的分析及其结论 : ⑴、 实验现象(观察结果): 将制作好的小鼠骨髓细胞微核涂片分别先后置于低、高倍镜下观察、识别小鼠骨髓细胞微核的形态及染色,可观察到其染色呈灰蓝色,嗜多染红细胞中的微核呈紫红色或蓝紫色的较小圆形、边缘光滑的微粒。其图片如下所示: ⑵、 对实验结果的分析: 根据实验所得结果用Excel 进行作图可得如下图象: 各组受试物微核率 5010015020025030035040045012080 40 3 1.5 1 3 2 1 40mg/kg体重 40mg/kg体重 1 2 3 1 2 3 1 2 3 阴性阳性对苯二酚 秋水仙素 氯化汞 对照组 受试物及其剂量(mg/kg) 含微核细胞数 从上图中我们可以看出试验所用的受试物对小鼠的染色体都有一定的损害作用,从而是小鼠骨髓细胞产生微核,且对于同一种受试物其所用剂量越大,则其对应的微核率越高,即微核率的大小与受试物(作用因子)的剂量呈正比。 另外,我们也可以从阴性对照组微核检出率不足0.5%中看出小鼠骨髓细胞中自发的微核率明显低于各组受试物和阳性对照组的结果,这说明在自然条件下小鼠骨髓细胞中同样存在染色体受损的情况,此次实验人为注射的各组受试物的微核率较高,表明它们对染色体的纺锤体或着丝点功能有损害作用的物质,为微核试验阳性物质。

全面禁止核试验条约

『全面禁止核试验条约』是历史上第一次以法律形式在全世界范围内全面禁止一切核试验,为核试验永久地画上句号。 签署时间: 1996年9月24日 条约简介: 《全面禁止核试验条约》包括序言、17条、两个附件及议定书。条约规定,缔约国将作出有步骤、渐进的努力,在全球范围内裁减核武器,以求实现消除核武器,在严格和有效的国际监督下全面彻底核裁军的最终目标。所有缔约国承诺不进行任何核武器试验爆炸或任何其他核爆炸,并承诺不导致、鼓励或以任何方式参与任何核武器试验爆炸。 条约还规定,经签署国按照各自宪法程序批准后,条约将从所有44个裁军谈判会议成员国交存批准书之日起第180天生效,截至2004年9月,44个国家中已有32个批准了该条约。1996年9月24日,该条约开放供所有国家签署。中国等16个国家的领导人或外长当天在纽约联合国总部首批签署了全面禁止核试验条约。截至2006年10月,已有176个国家签署了该条约,135个国家批准该条约。 1999年10月,联合国在维也纳召开了首届促进《全面禁止核试验条约》生效大会。2001年11月,第二届《全面禁止核试验条约》生效大会在纽约举行。2003年9月,第三届促进《全面禁止核试验条约》生效大会在维也纳举行。 《全面禁止核试验条约》要点 ?§序言 “遏制研制核武器和遏制提高核武器质量,结束研制新式先进的核武器,从而停止一切核武器爆炸试验和其他一切核爆炸,是在一切方面实现核裁军和核不扩散的一项有效措施。”条约草稿说,因此,这“将是在建立实现核裁军的有系统程序方面的一个重大步骤”。 §范围 条约说:“每个缔约国都保证不进行任何核武器爆炸试验或任何其它的核爆炸。”这一条款不包括被认为完善实用的核武器或研制新一代武器所必需的试验的实验性阶段。 它还不包括被认为是非军事性质如用于科研目的的核爆炸。这是中国过去争取的但却没有获得的选择权。 条约中再次提到从理论上重新研究着手进行“和平核爆炸”的可能性这一前景,这是中国方面挽回面子的一个措施。但是存在着种种限制因素,这种试验未必能付诸实施。本协议并没有禁止旨在核实现有武器实用性的连锁反应试验。 §条约的履行 本条约是要由一个使用尖端监测系统的执行委员会来执行。这个执行委员会还将有权力对核设施进行现场检查。这个执行委员会将设在维也纳,它设在维也纳可以利用国际原子能机构专家的知识,国际原子能机构总部也设在这里。 这个51人执行委员会将由来自世界各个地区的委员组成。它将对现场检查作出决定。对于想要保护本国安全利益而又不违反本条约的各国来说,现场检查是个敏感的问题。批准现场检查只需要简单多数票通过,即只需要26名执行委员会委员赞成。 以色列将成为执行委员会中东小组的成员,这个问题使伊朗感到不安,伊朗认为以色列应该属于西方小组。 §检查 这项任务将以一个所谓的国际监测系统收集的多国数据为根据,这个国际监测系统由4个网络组成,在世界各地有几十个监测站。这些监测站能够检测出地下试验引起的振动、渗入大气层的碎片和气体以及海洋下面的音响线索。在本条约规定的监测系统之外,各国政府

蚕豆根尖细胞微核实验

蚕豆根尖细胞微核技术检测洗衣粉的毒性姓名:马丽同组者:李哲指导教师:郝雪峰 (太原师范学院生物系112班) 摘要微核(micronucleus,MCN)是真核生物细胞经各种理化因子作用后引起染色体畸变,在间期细胞中的一种表现形式。在细胞间期,微核呈圆形或椭圆形,游离于主核之外,大小应在主核1/3~1/20,染色与主核一样或稍浅。一般认为微核是由无着丝粒的染色体断片或落后染色体,在分裂末期不能进入主核,便形成了主核之外的核块。当子细胞进入下一次分裂间期时,它们便浓缩成主核之外的小核,即微核。[1] Abstract Micronucleus (MCN, micronucleus) is eukaryotic cells by various physical and chemical factors caused by chromosome aberration, and in a form of interphase cells. In interphase cells micronucleus assumes the circular or elliptic, free from the main nuclear, nuclear 1/3 ~ 1/20 size should be in the main, dyeing and the main nuclear as or slightly shallow. Generally considered microkernel by acentric chromosome fragment or lagging chromosomes, in the late division could not enter the nucleus, formed the main nuclear nuclear block. When the cells into the next phase split between, they condense into main small nuclear nuclear, namely the microkernel. [1] 关键词蚕豆根尖微核洗衣粉染色体畸变千分率 Keyword Broad bean root tip Micronucleus Washing powder Chromosomal aberration Permillage 引言掌握蚕豆根尖细胞微核检测技术的一般方法。并利用蚕豆根尖细胞微核检测技术对洗衣粉的毒性状况给出客观的评价,同时表明蚕豆根尖细胞MCN对胁迫很敏感,蚕豆根尖微核技术可用于洗漱用品的安全监测。 蚕豆是一种很好的细胞遗传学研究材料。它的染色体为六对相当大的染色体,而且根尖含有较多的分裂相细胞,非常适合显微观察。目前,蚕豆根尖微核技术在环境致突变性检测/监测方面已经形成了一套完整的体系。它的可靠性和灵敏性较高,且本底较低,这对于一种致突变性检测方法是十分重要的。此外,它的检测物谱较广。目前多数学者认为,在镜检细胞微核时,应按下列标准计数微核:

从几个方面分析朝鲜核试验的影响

朝鲜核试从五个方面改变相关国际格局-----------------------------------我们应该认识到,在朝鲜问题中的国际关系格局,因为朝鲜首次核试,已经发生了根本的质变。首先,在朝鲜未进行核试的背景下,六方会谈是针对朝鲜问题的主要国际机制;在朝鲜首次核试之后,随着形势的演变,联合国的更加广泛的应对机制、美国的可能出现的单边机制、扩展了的多方会谈机制都可能成为新的国际机制。我们应该清醒的认识到,朝鲜首次核试已经不可避免的证明了六方会谈发生了一次挫折,在六方会谈之外的新的解决机制正在滋长。其次,在朝鲜未进行核试的情况下,六方会谈参与各方对于朝鲜问题的解决优先级、重视度、关联目标、系统对策都各不相同,各方利益和立场也难以找到一个引起本质的碰撞和“站队”的焦点,因此给朝鲜带来相当大的谋略上的腾挪空间;在朝鲜首次核试之后,朝鲜核武问题成为各国共同的心腹大患,成为让各国在新形势下保持一致步调的一次契机,朝鲜自己压缩了自己的博弈空间,也丧失了自己的主动权。第三,在朝鲜未进行核试的情况下,国际社会应对朝鲜问题的前提是朝鲜无核武,具体决策和步调更多的趋向于引导、制约、援助、对话等多举并重,但并没有形成一个立场高度一致、统一对朝施加压力的格局,朝鲜面对的压力是各方互相牵制的;朝鲜首次核试后,朝鲜将不得不吞咽自酿的苦果而成为国际社会的共同施压目标,这对于内部状况不佳的朝鲜来说不啻是雪上加霜。第四,因为朝鲜首次核试,原六方会谈各方将增强互相对话和协调,增强对于朝鲜核问题的重视和动作,增强对朝鲜的谋略和布局,朝鲜核问题作为全球性安全问题之一,将显出更强烈的战略重要性。第五,对于朝鲜首次核试成为事实,中国美等相关国家都将面对全新的挑战。一方面相关各国将全面反省在六方会谈历史中的本国战略和策略,及时进行自我调整;一方面相关各国将被迫对于自身地区和全球安全的战略、策略、目标、布局进行相应的调整,以应对朝鲜核试给全球安全形势带来的巨大而全面的冲击。综上所述说,朝鲜首次核试的影响广泛、深远而持久,不仅仅作用于朝鲜自身、朝核相关各方,还作用于世界性的安全利益;朝鲜核问题的演变和深化改变了其国际格局和外部环境,反之被动改变了的国际格局和外部环境将反作用于朝鲜核问题,形成一系列新的解决之道。==============================================================评朝鲜首次核试为何招致国际众怒据朝鲜中央通讯社报道,朝鲜在9日“安全、成功地”进行了核试验。朝鲜首次核试成功的事实,无情的摆在世界面前,这标志着朝鲜核武力建设的正式突破,标志着全球核控安全局势的重大危机,标志着朝鲜对于包括中、美、日、韩、俄、欧等在内的广泛国际利益的挑战,标准着反恐形势更大的不确定性。笔者注意到,朝鲜首次核试遭到世界的普遍谴责。联合国秘书长安南说,朝鲜首次核试“违反了国际裁军和核不扩散的准则,也违反了目前国际禁止核试验公约,加剧了朝鲜半岛的紧张局势,危害了朝鲜半岛及附近地区的安全。”中国强烈要求朝方信守无核化承诺,停止一切可能导致局势进一步恶化的行动,重新回到六方会谈的轨道上来。中国政府同时呼吁有关各方冷静应对,坚持通过协商和对话和平解决问题。美国白宫发表声明指出,美国期待联合国安理会对朝鲜进行核试验尽快采取回应措施:“朝鲜核试验是向国际社会的挑衅行动,朝鲜核试验无视国际社会的意志以及我们提出的要求朝鲜放弃不要加剧东北亚地区紧张局势行动的呼吁”,同时美国代表团很可能将要求根据联合国宪章第七章通过对朝鲜实施严厉的国际贸易制裁。同时美国表示考虑可能向朝鲜海岸派遣自己的军舰,“希望可以拦截和检查所有进出朝鲜的船只”。布什表示,朝鲜进行核试验是一条危险的道路,国际社会应就此发表一个坚决、冷静、公开的声明。俄罗斯总统普京十月九日谴责朝鲜进行的核试验对核武器不扩散条约造成巨大损害,希望朝鲜方面重返谈判程序。俄罗斯外交部发表声明指出,此举破坏了朝鲜半岛无核化的局面,将导致该地区局势恶化。日本表示,这是“对日本、东北亚和国际社会安全的重大威胁,是向核不扩散条约体系的挑战,违反了日朝平壤宣言和六方会谈联合声明,要进行严重抗议和严厉谴责”,日本首相安倍晋三表示坚决不能容忍。

黄豆芽微核实验报告

生态工程学院 遗传学设计性实验报告 题目:黄豆根尖微核技术系别:生态工程学院 专业班级:生物科学2012级 组员姓名:孟迎、罗廷、何忠平 蔡国宪、丁琴 姓名:罗廷 学号:28111201029 指导教师:蹇黎 完成时间: 2015 年 6月11日

黄豆根尖微核实验报告 一、实验目的 1、了解环境诱变物对微核产生的原理。 2、掌握微核试验技术。 3、了解毒理遗传学在环境监测中的应用及意义 二、实验原理 微核简称(MCN),是真核生物细胞中的一种异常结构,往往是细胞经辐射或化学药物的作用而产生。微核是无着丝点的染色体断片,在有丝分裂后期由于不能向两极移动而游离于细胞质中,在间期细胞核形成时,可在它附近看到若干个圆形的结构,游离于主核之外直径大约是细胞直径的1/20到1/5,这就是微核。微核的折光率及细胞化学反应性质和主核一样。一般认为微核是由有丝分裂后期丧失着丝粒的断片产生的,但有些实验也证明整条的染色体或多条染色体也能形成微核。这些断片或染色体在细胞分裂末期被两个子细胞核所排斥便形成了第三个核块。已经证实微核率的大小是和用药的剂量或辐射累积效应呈正相关,这一点和染色体畸变的情况一样。所以可用简易的间期微核计数来代替繁杂的中期畸变染色体计数。 由于大量新的化合物的合成,原子能应用,各种各样工业废物的排出,使人们需要有一套高度灵敏、技术简单的测试系统来监视环境的变化。微核产生的概率可与诱变因子的剂量成正比,因此可以用微核出现的频率来评价环境诱变因子对生物遗传物质的损伤程度。目前微核测试已经广泛应用于辐射损伤、辐射防护、化学诱变剂、新药试验、染色体遗传疾病及癌症前期诊断等各方面。 随着经济发展、经济总量增加,废水排放总量增长迅速,污染物排放总量超过水环境容量,尤其在一些人口密集、企业密布或重污染企业分布较多的区域。水质恶化问题已经比较突出;饮用水水源地有机污染日渐严重,饮用水安全问题已经显现,人民群众生产、生活受到影响。利用毕节市流仓河道河水以黄豆萌发的芽作为实验材料进行微核测试,一方面可准确的显示各种处理诱发植物畸变的效果,另一方面可用于当今发展地区对河道污染程度的间接反应和监测。

实验二 编程实现进程(线程)同步和互斥

《操作系统》实验内容 实验二编程实现进程(线程)同步和互斥 1.实验的目的 (1)通过编写程序实现进程同步和互斥,使学生掌握有关进程(线程)同步与互斥的原理,以及解决进程(线程)同步和互斥的算法,从而进一步巩固进程(线程)同步和互斥等有关的内容。 (2)了解Windows2000/XP中多线程的并发执行机制,线程间的同步和互斥。 (3)学习使用Windows2000/XP中基本的同步对象,掌握相应的API函数。 (4)掌握进程和线程的概念,进程(线程)的控制原语或系统调用的使用。 (5)掌握多道程序设计的基本理论、方法和技术,培养学生多道程序设计的能力。2.实验内容 在Windows XP、Windows 2000等操作系统下,使用的VC、VB、java或C等编程语言,采用进程(线程)同步和互斥的技术编写程序实现生产者-消费者问题或哲学家进餐问题或读者-写者问题或自己设计一个简单进程(线程)同步和互斥的实际问题。 3.实验要求 (1)经调试后程序能够正常运行。 (2)采用多进程或多线程方式运行,体现了进程(线程)同步和互斥的关系。 (3)程序界面美观。 4.实验步骤 (1)需求分析:了解基本原理,确定程序的基本功能,查找相关资料,画出基本的数据流图; (2)概要设计:确定程序的总体结构、模块关系和总体流程; (3)详细设计:确定模块内部的流程和实现算法; (4)上机编码和调试; (5)运行测试; (6)编写实验报告。 5.实验报告要求 格式符合《实验报告格式》书;书写规范,排版美观,有较强的文字表达能力,能够正确地表达自己的思想,图表符合规范。 6.实验说明 本实验分两次进行,每次要求填写一份实验报告,报告中的实验名分别为:编程实现进程同步和互斥1和编程实现进程同步和互斥2,其他内容依据实验进度具体填写。

蚕豆根尖细胞微核实验

蚕豆根尖细胞微核技术检测洗衣粉的毒性 姓名:马丽同组者:李哲指导教师:郝雪峰 (太原师范学院生物系112班) 摘要微核(micronucleus,MCN)是真核生物细胞经各种理化因子作用后引起染色体畸变,在间期细胞中的一种表现形式。在细胞间期,微核呈圆形或椭圆形,游离于主核之外,大小应在主核1/3~1/20,染色与主核一样或稍浅。一般认为微核是由无着丝粒的染色体断片或落后染色体,在分裂末期不能进入主核,便形成了主核之外的核块。当子细胞进入下一次分裂间期时,它们便浓缩成主核之外的小核,即微核。[1] Abstract Micronucleus (MCN, micronucleus) is eukaryotic cells by various physical and chemical factors caused by chromosome aberration, and in a form of interphase cells. In interphase cells micronucleus assumes the circular or elliptic, free from the main nuclear, nuclear 1/3 ~ 1/20 size should be in the main, dyeing and the main nuclear as or slightly shallow. Generally considered microkernel by acentric chromosome fragment or lagging chromosomes, in the late division could not enter the nucleus, formed the main nuclear nuclear block. When the cells into the next phase split between, they condense into main small nuclear nuclear, namely the microkernel. [1] 关键词蚕豆根尖微核洗衣粉染色体畸变千分率 Keyword Broad bean root tip Micronucleus Washing powder Chromosomal aberration Permillage 引言掌握蚕豆根尖细胞微核检测技术的一般方法。并利用蚕豆根尖细胞微核检测技术对洗衣粉的毒性状况给出客观的评价,同时表明蚕豆根尖细胞MCN对胁迫很敏感,蚕豆根尖微核技术可用于洗漱用品的安全监测。 蚕豆是一种很好的细胞遗传学研究材料。它的染色体为六对相当大的染色体,而且根尖含有较多的分裂相细胞,非常适合显微观察。目前,蚕豆根尖微核技术在环境致突变性检测/监测方面已经形成了一套完整的体系。它的可靠性和灵敏性较高,且本底较低,这对于一种致突变性检测方法是十分重要的。此外,它的检测物谱较广。目前多数学者认为,在镜检细胞微核时,应按下列标准计数微核: (1)凡主核大小1/3以下,与主核分离的小核;

相关主题
文本预览
相关文档 最新文档