操作系统是计算机专业的核心课,可以说是体现程序员编程技能内功的主要内容。
自己所学的专业也不是正统的计算机科学,而是数学与计算科学,主要方向是算法和计算数学着这一块,而且目前尚处于大二上阶段,操作系统没学,所以遇到好多操作系统相关的概念都非常的困扰。现在趁着在做高性能计算实验这个机会好好的将所遇到的操作系统概念和知识整理出来,现学现用。
多数本科生操作系统的学习,无非就是找本教材从头到尾滚一遍,这样虽然能大致了解整个课程的整体内容,对实际操作功效虽有,但不大。最好的学习方式是,基于一个项目的学习,动手实际操作,活学活用,更助于理解和记忆知识与原理。
好了,废话不多说。开始!
1. 背景:
做NAMD优化时,在官方给出的说明文档中有这么一段
-- Individual Windows, Linux, Mac OS X, or Other Unix Workstations -- Windows, Mac OX X (Intel), and Linux-x86_64-multicore released binaries are based on "multicore" builds of Charm++ that can run multiple threads. These multicore builds lack a network layer, so they can only be used on a single machine. For best performance use one thread per processor with the +p option: namd2 +p<procs> <configfile> For other multiprocessor workstations the included charmrun program is needed to run multiple namd2 processes. The ++local option is also required to specify that only the local machine is being used: charmrun namd2 ++local +p<procs> <configfile>在单计算结点上,我使用 namd2 +p4 <configfile>的确是可以在单结点4核心上跑,但是下面那一段就有点不理解了。命令行执行charmrun namd2 +p4 <configfile>成功在单结点上运行了程序,但是效果似乎还没有上一个好。这就奇怪了。
后来查到资料才发现,原来charmrun只是使用超线程,并没有我想象中的在多结点上跑应用。
2. 概念:
超线程:一颗cpu同时执行多个应用程序而共享一颗cpu的资源,理论上要像两颗cpu一样在同一时间执行两个线程。
1. 背景:
之前看MFC相关书籍时看到过有关多线程的内容,可惜急于快速掌握MFC并进行开发,好多重要内容都跳过了。现在学MPI在查阅资料时,又遇到了这东西,索性一次性解决掉它。
2. 概念要点:
1. 背景:
以前看linux系统的书时经常会接触到这个专业名词。看mpi相关内容时搜到一篇《MPI常用命令》时又遇到了这个问题,之前从《操作系统原理与linux系统实验》这本书彻底理解过这个概念,一时想不起来了,baidu一下后就捡起来了。
2. 概念:
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。
由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。