├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── custom.md
│ └── feature_request.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CPU Scheduling Algorithms.sln
├── CPU Scheduling Algorithms
├── App.config
├── CPU Scheduling Algorithms.csproj
├── Form1.Designer.cs
├── Form1.cs
├── Form1.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── QueueExtension.cs
├── Resources
│ ├── 22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png
│ ├── 99f76b3de162688defe73255366828e2.jpg
│ └── commuist.ico
└── TextBoxStreamWriter.cs
├── LICENSE
├── Pics
├── FCFS.jpg
├── Priority_nonPr.jpg
├── Priority_pr.jpg
├── RR.jpg
├── SJF_nonPr.jpg
└── SJF_pr.jpg
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/custom.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Custom issue template
3 | about: Describe this issue template's purpose here.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | We as members, contributors, and leaders pledge to make participation in our
6 | community a harassment-free experience for everyone, regardless of age, body
7 | size, visible or invisible disability, ethnicity, sex characteristics, gender
8 | identity and expression, level of experience, education, socio-economic status,
9 | nationality, personal appearance, race, religion, or sexual identity
10 | and orientation.
11 |
12 | We pledge to act and interact in ways that contribute to an open, welcoming,
13 | diverse, inclusive, and healthy community.
14 |
15 | ## Our Standards
16 |
17 | Examples of behavior that contributes to a positive environment for our
18 | community include:
19 |
20 | * Demonstrating empathy and kindness toward other people
21 | * Being respectful of differing opinions, viewpoints, and experiences
22 | * Giving and gracefully accepting constructive feedback
23 | * Accepting responsibility and apologizing to those affected by our mistakes,
24 | and learning from the experience
25 | * Focusing on what is best not just for us as individuals, but for the
26 | overall community
27 |
28 | Examples of unacceptable behavior include:
29 |
30 | * The use of sexualized language or imagery, and sexual attention or
31 | advances of any kind
32 | * Trolling, insulting or derogatory comments, and personal or political attacks
33 | * Public or private harassment
34 | * Publishing others' private information, such as a physical or email
35 | address, without their explicit permission
36 | * Other conduct which could reasonably be considered inappropriate in a
37 | professional setting
38 |
39 | ## Enforcement Responsibilities
40 |
41 | Community leaders are responsible for clarifying and enforcing our standards of
42 | acceptable behavior and will take appropriate and fair corrective action in
43 | response to any behavior that they deem inappropriate, threatening, offensive,
44 | or harmful.
45 |
46 | Community leaders have the right and responsibility to remove, edit, or reject
47 | comments, commits, code, wiki edits, issues, and other contributions that are
48 | not aligned to this Code of Conduct, and will communicate reasons for moderation
49 | decisions when appropriate.
50 |
51 | ## Scope
52 |
53 | This Code of Conduct applies within all community spaces, and also applies when
54 | an individual is officially representing the community in public spaces.
55 | Examples of representing our community include using an official e-mail address,
56 | posting via an official social media account, or acting as an appointed
57 | representative at an online or offline event.
58 |
59 | ## Enforcement
60 |
61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
62 | reported to the community leaders responsible for enforcement at
63 | ok.
64 | All complaints will be reviewed and investigated promptly and fairly.
65 |
66 | All community leaders are obligated to respect the privacy and security of the
67 | reporter of any incident.
68 |
69 | ## Enforcement Guidelines
70 |
71 | Community leaders will follow these Community Impact Guidelines in determining
72 | the consequences for any action they deem in violation of this Code of Conduct:
73 |
74 | ### 1. Correction
75 |
76 | **Community Impact**: Use of inappropriate language or other behavior deemed
77 | unprofessional or unwelcome in the community.
78 |
79 | **Consequence**: A private, written warning from community leaders, providing
80 | clarity around the nature of the violation and an explanation of why the
81 | behavior was inappropriate. A public apology may be requested.
82 |
83 | ### 2. Warning
84 |
85 | **Community Impact**: A violation through a single incident or series
86 | of actions.
87 |
88 | **Consequence**: A warning with consequences for continued behavior. No
89 | interaction with the people involved, including unsolicited interaction with
90 | those enforcing the Code of Conduct, for a specified period of time. This
91 | includes avoiding interactions in community spaces as well as external channels
92 | like social media. Violating these terms may lead to a temporary or
93 | permanent ban.
94 |
95 | ### 3. Temporary Ban
96 |
97 | **Community Impact**: A serious violation of community standards, including
98 | sustained inappropriate behavior.
99 |
100 | **Consequence**: A temporary ban from any sort of interaction or public
101 | communication with the community for a specified period of time. No public or
102 | private interaction with the people involved, including unsolicited interaction
103 | with those enforcing the Code of Conduct, is allowed during this period.
104 | Violating these terms may lead to a permanent ban.
105 |
106 | ### 4. Permanent Ban
107 |
108 | **Community Impact**: Demonstrating a pattern of violation of community
109 | standards, including sustained inappropriate behavior, harassment of an
110 | individual, or aggression toward or disparagement of classes of individuals.
111 |
112 | **Consequence**: A permanent ban from any sort of public interaction within
113 | the community.
114 |
115 | ## Attribution
116 |
117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118 | version 2.0, available at
119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120 |
121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct
122 | enforcement ladder](https://github.com/mozilla/diversity).
123 |
124 | [homepage]: https://www.contributor-covenant.org
125 |
126 | For answers to common questions about this code of conduct, see the FAQ at
127 | https://www.contributor-covenant.org/faq. Translations are available at
128 | https://www.contributor-covenant.org/translations.
129 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | [Contributing]
4 |
5 | If you want to contribute to this project, please contact with me by email or facebook <3
6 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31605.320
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPU Scheduling Algorithms", "CPU Scheduling Algorithms\CPU Scheduling Algorithms.csproj", "{1F088284-C921-4395-BE46-EE2EFFA6CF77}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {C4402D13-48F7-4A84-B4CE-0C468F4A69D8}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/CPU Scheduling Algorithms.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}
8 | WinExe
9 | CPU_Scheduling_Algorithms
10 | CPU Scheduling Algorithms
11 | v4.7.2
12 | 512
13 | true
14 | true
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | true
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 | true
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | Form
53 |
54 |
55 | Form1.cs
56 |
57 |
58 |
59 |
60 |
61 |
62 | Form1.cs
63 |
64 |
65 | ResXFileCodeGenerator
66 | Resources.Designer.cs
67 | Designer
68 |
69 |
70 | True
71 | Resources.resx
72 | True
73 |
74 |
75 | SettingsSingleFileGenerator
76 | Settings.Designer.cs
77 |
78 |
79 | True
80 | Settings.settings
81 | True
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace CPU_Scheduling_Algorithms
3 | {
4 | partial class MainForm
5 | {
6 | ///
7 | /// Required designer variable.
8 | ///
9 | private System.ComponentModel.IContainer components = null;
10 |
11 | ///
12 | /// Clean up any resources being used.
13 | ///
14 | /// true if managed resources should be disposed; otherwise, false.
15 | protected override void Dispose(bool disposing)
16 | {
17 | if (disposing && (components != null))
18 | {
19 | components.Dispose();
20 | }
21 | base.Dispose(disposing);
22 | }
23 |
24 | #region Windows Form Designer generated code
25 |
26 | ///
27 | /// Required method for Designer support - do not modify
28 | /// the contents of this method with the code editor.
29 | ///
30 | private void InitializeComponent()
31 | {
32 | this.components = new System.ComponentModel.Container();
33 | System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
34 | System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
35 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
36 | this.txtConsole = new System.Windows.Forms.TextBox();
37 | this.CountTime = new System.Windows.Forms.Label();
38 | this.label2 = new System.Windows.Forms.Label();
39 | this.label3 = new System.Windows.Forms.Label();
40 | this.ClearBtn = new System.Windows.Forms.Button();
41 | this.GanttChartPanel = new System.Windows.Forms.Panel();
42 | this.deleteBtn = new System.Windows.Forms.Button();
43 | this.addBtn = new System.Windows.Forms.Button();
44 | this.dataGridView1 = new System.Windows.Forms.DataGridView();
45 | this.stt = new System.Windows.Forms.DataGridViewTextBoxColumn();
46 | this.CotThoiGianDen = new System.Windows.Forms.DataGridViewTextBoxColumn();
47 | this.CotThoiGianXuLy = new System.Windows.Forms.DataGridViewTextBoxColumn();
48 | this.panel1 = new System.Windows.Forms.Panel();
49 | this.PreemptiveBtn = new System.Windows.Forms.RadioButton();
50 | this.NonPreemptiveBtn = new System.Windows.Forms.RadioButton();
51 | this.label4 = new System.Windows.Forms.Label();
52 | this.RunBtn = new System.Windows.Forms.Button();
53 | this.label1 = new System.Windows.Forms.Label();
54 | this.menuStrip1 = new System.Windows.Forms.MenuStrip();
55 | this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
56 | this.FCFS_menu = new System.Windows.Forms.ToolStripMenuItem();
57 | this.SJF_menu = new System.Windows.Forms.ToolStripMenuItem();
58 | this.Priority_menu = new System.Windows.Forms.ToolStripMenuItem();
59 | this.RR_menu = new System.Windows.Forms.ToolStripMenuItem();
60 | this.chọnThuậtToánTạiĐâyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
61 | this.panel2 = new System.Windows.Forms.Panel();
62 | this.Algorithm = new System.Windows.Forms.TextBox();
63 | this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
64 | this.qInput = new System.Windows.Forms.NumericUpDown();
65 | this.label5 = new System.Windows.Forms.Label();
66 | this.RRPanel = new System.Windows.Forms.Panel();
67 | ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
68 | this.panel1.SuspendLayout();
69 | this.menuStrip1.SuspendLayout();
70 | this.panel2.SuspendLayout();
71 | ((System.ComponentModel.ISupportInitialize)(this.qInput)).BeginInit();
72 | this.RRPanel.SuspendLayout();
73 | this.SuspendLayout();
74 | //
75 | // txtConsole
76 | //
77 | this.txtConsole.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
78 | | System.Windows.Forms.AnchorStyles.Left)
79 | | System.Windows.Forms.AnchorStyles.Right)));
80 | this.txtConsole.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
81 | this.txtConsole.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
82 | this.txtConsole.ForeColor = System.Drawing.Color.Lime;
83 | this.txtConsole.Location = new System.Drawing.Point(42, 446);
84 | this.txtConsole.Margin = new System.Windows.Forms.Padding(4);
85 | this.txtConsole.Multiline = true;
86 | this.txtConsole.Name = "txtConsole";
87 | this.txtConsole.ReadOnly = true;
88 | this.txtConsole.ScrollBars = System.Windows.Forms.ScrollBars.Both;
89 | this.txtConsole.Size = new System.Drawing.Size(810, 143);
90 | this.txtConsole.TabIndex = 22;
91 | this.txtConsole.WordWrap = false;
92 | //
93 | // CountTime
94 | //
95 | this.CountTime.AutoSize = true;
96 | this.CountTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
97 | this.CountTime.Location = new System.Drawing.Point(97, 394);
98 | this.CountTime.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
99 | this.CountTime.Name = "CountTime";
100 | this.CountTime.Size = new System.Drawing.Size(16, 18);
101 | this.CountTime.TabIndex = 18;
102 | this.CountTime.Text = "0";
103 | //
104 | // label2
105 | //
106 | this.label2.AutoSize = true;
107 | this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
108 | this.label2.Location = new System.Drawing.Point(46, 394);
109 | this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
110 | this.label2.Name = "label2";
111 | this.label2.Size = new System.Drawing.Size(45, 18);
112 | this.label2.TabIndex = 16;
113 | this.label2.Text = "Time:";
114 | //
115 | // label3
116 | //
117 | this.label3.AutoSize = true;
118 | this.label3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
119 | this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
120 | this.label3.Location = new System.Drawing.Point(42, 282);
121 | this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
122 | this.label3.Name = "label3";
123 | this.label3.Size = new System.Drawing.Size(97, 20);
124 | this.label3.TabIndex = 27;
125 | this.label3.Text = "Gantt Chart";
126 | //
127 | // ClearBtn
128 | //
129 | this.ClearBtn.BackColor = System.Drawing.Color.Red;
130 | this.ClearBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
131 | this.ClearBtn.Location = new System.Drawing.Point(196, 231);
132 | this.ClearBtn.Margin = new System.Windows.Forms.Padding(4);
133 | this.ClearBtn.Name = "ClearBtn";
134 | this.ClearBtn.Size = new System.Drawing.Size(84, 52);
135 | this.ClearBtn.TabIndex = 26;
136 | this.ClearBtn.Text = "Reset";
137 | this.toolTip1.SetToolTip(this.ClearBtn, "Nút làm lại cuộc đời");
138 | this.ClearBtn.UseVisualStyleBackColor = false;
139 | this.ClearBtn.Click += new System.EventHandler(this.ClearBtn_Click);
140 | //
141 | // GanttChartPanel
142 | //
143 | this.GanttChartPanel.AutoScroll = true;
144 | this.GanttChartPanel.AutoScrollMargin = new System.Drawing.Size(5000, 0);
145 | this.GanttChartPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
146 | this.GanttChartPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
147 | this.GanttChartPanel.Location = new System.Drawing.Point(42, 305);
148 | this.GanttChartPanel.Margin = new System.Windows.Forms.Padding(4);
149 | this.GanttChartPanel.Name = "GanttChartPanel";
150 | this.GanttChartPanel.Size = new System.Drawing.Size(810, 84);
151 | this.GanttChartPanel.TabIndex = 25;
152 | //
153 | // deleteBtn
154 | //
155 | this.deleteBtn.Location = new System.Drawing.Point(768, 115);
156 | this.deleteBtn.Margin = new System.Windows.Forms.Padding(4);
157 | this.deleteBtn.Name = "deleteBtn";
158 | this.deleteBtn.Size = new System.Drawing.Size(84, 42);
159 | this.deleteBtn.TabIndex = 24;
160 | this.deleteBtn.Text = "Remove";
161 | this.deleteBtn.UseVisualStyleBackColor = true;
162 | this.deleteBtn.Click += new System.EventHandler(this.deleteBtn_Click);
163 | //
164 | // addBtn
165 | //
166 | this.addBtn.Location = new System.Drawing.Point(768, 68);
167 | this.addBtn.Margin = new System.Windows.Forms.Padding(4);
168 | this.addBtn.Name = "addBtn";
169 | this.addBtn.Size = new System.Drawing.Size(84, 42);
170 | this.addBtn.TabIndex = 23;
171 | this.addBtn.Text = "Add";
172 | this.addBtn.UseVisualStyleBackColor = true;
173 | this.addBtn.Click += new System.EventHandler(this.addBtn_Click);
174 | //
175 | // dataGridView1
176 | //
177 | dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
178 | dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
179 | dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
180 | dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
181 | dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
182 | dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
183 | dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
184 | this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
185 | this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
186 | this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
187 | this.stt,
188 | this.CotThoiGianDen,
189 | this.CotThoiGianXuLy});
190 | dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
191 | dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
192 | dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
193 | dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
194 | dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
195 | dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
196 | dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
197 | this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
198 | this.dataGridView1.Location = new System.Drawing.Point(286, 68);
199 | this.dataGridView1.Margin = new System.Windows.Forms.Padding(4);
200 | this.dataGridView1.Name = "dataGridView1";
201 | this.dataGridView1.RowHeadersWidth = 51;
202 | this.dataGridView1.RowTemplate.Height = 24;
203 | this.dataGridView1.Size = new System.Drawing.Size(474, 216);
204 | this.dataGridView1.TabIndex = 19;
205 | //
206 | // stt
207 | //
208 | this.stt.HeaderText = "Tiến trình";
209 | this.stt.MinimumWidth = 6;
210 | this.stt.Name = "stt";
211 | this.stt.ReadOnly = true;
212 | this.stt.Width = 50;
213 | //
214 | // CotThoiGianDen
215 | //
216 | this.CotThoiGianDen.HeaderText = "Thời gian đến";
217 | this.CotThoiGianDen.MinimumWidth = 6;
218 | this.CotThoiGianDen.Name = "CotThoiGianDen";
219 | this.CotThoiGianDen.Width = 125;
220 | //
221 | // CotThoiGianXuLy
222 | //
223 | this.CotThoiGianXuLy.HeaderText = "Thời gian xử lý";
224 | this.CotThoiGianXuLy.MinimumWidth = 6;
225 | this.CotThoiGianXuLy.Name = "CotThoiGianXuLy";
226 | this.CotThoiGianXuLy.Width = 130;
227 | //
228 | // panel1
229 | //
230 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
231 | this.panel1.Controls.Add(this.PreemptiveBtn);
232 | this.panel1.Controls.Add(this.NonPreemptiveBtn);
233 | this.panel1.Enabled = false;
234 | this.panel1.Location = new System.Drawing.Point(116, 113);
235 | this.panel1.Margin = new System.Windows.Forms.Padding(4);
236 | this.panel1.Name = "panel1";
237 | this.panel1.Size = new System.Drawing.Size(163, 76);
238 | this.panel1.TabIndex = 21;
239 | //
240 | // PreemptiveBtn
241 | //
242 | this.PreemptiveBtn.AutoSize = true;
243 | this.PreemptiveBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
244 | this.PreemptiveBtn.Location = new System.Drawing.Point(17, 40);
245 | this.PreemptiveBtn.Margin = new System.Windows.Forms.Padding(4);
246 | this.PreemptiveBtn.Name = "PreemptiveBtn";
247 | this.PreemptiveBtn.Size = new System.Drawing.Size(133, 20);
248 | this.PreemptiveBtn.TabIndex = 3;
249 | this.PreemptiveBtn.Text = "Không độc quyền";
250 | this.PreemptiveBtn.UseVisualStyleBackColor = true;
251 | //
252 | // NonPreemptiveBtn
253 | //
254 | this.NonPreemptiveBtn.AutoSize = true;
255 | this.NonPreemptiveBtn.Checked = true;
256 | this.NonPreemptiveBtn.Location = new System.Drawing.Point(17, 14);
257 | this.NonPreemptiveBtn.Margin = new System.Windows.Forms.Padding(4);
258 | this.NonPreemptiveBtn.Name = "NonPreemptiveBtn";
259 | this.NonPreemptiveBtn.Size = new System.Drawing.Size(97, 21);
260 | this.NonPreemptiveBtn.TabIndex = 2;
261 | this.NonPreemptiveBtn.TabStop = true;
262 | this.NonPreemptiveBtn.Text = "Độc quyền";
263 | this.NonPreemptiveBtn.UseVisualStyleBackColor = true;
264 | //
265 | // label4
266 | //
267 | this.label4.AutoSize = true;
268 | this.label4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
269 | this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
270 | this.label4.Location = new System.Drawing.Point(42, 422);
271 | this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
272 | this.label4.Name = "label4";
273 | this.label4.Size = new System.Drawing.Size(58, 20);
274 | this.label4.TabIndex = 28;
275 | this.label4.Text = "Result";
276 | //
277 | // RunBtn
278 | //
279 | this.RunBtn.Location = new System.Drawing.Point(768, 231);
280 | this.RunBtn.Margin = new System.Windows.Forms.Padding(4);
281 | this.RunBtn.Name = "RunBtn";
282 | this.RunBtn.Size = new System.Drawing.Size(84, 52);
283 | this.RunBtn.TabIndex = 20;
284 | this.RunBtn.Text = "Run";
285 | this.RunBtn.UseVisualStyleBackColor = true;
286 | this.RunBtn.Click += new System.EventHandler(this.startBtn_Click);
287 | //
288 | // label1
289 | //
290 | this.label1.AutoSize = true;
291 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
292 | this.label1.Location = new System.Drawing.Point(378, 31);
293 | this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
294 | this.label1.Name = "label1";
295 | this.label1.Size = new System.Drawing.Size(173, 29);
296 | this.label1.TabIndex = 17;
297 | this.label1.Text = "Định Thời CPU";
298 | //
299 | // menuStrip1
300 | //
301 | this.menuStrip1.BackColor = System.Drawing.Color.LightSkyBlue;
302 | this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
303 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
304 | this.toolStripMenuItem1,
305 | this.chọnThuậtToánTạiĐâyToolStripMenuItem});
306 | this.menuStrip1.Location = new System.Drawing.Point(0, 0);
307 | this.menuStrip1.Name = "menuStrip1";
308 | this.menuStrip1.Size = new System.Drawing.Size(903, 31);
309 | this.menuStrip1.TabIndex = 33;
310 | this.menuStrip1.Text = "menuStrip1";
311 | //
312 | // toolStripMenuItem1
313 | //
314 | this.toolStripMenuItem1.BackColor = System.Drawing.Color.DeepSkyBlue;
315 | this.toolStripMenuItem1.Checked = true;
316 | this.toolStripMenuItem1.CheckState = System.Windows.Forms.CheckState.Checked;
317 | this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
318 | this.FCFS_menu,
319 | this.SJF_menu,
320 | this.Priority_menu,
321 | this.RR_menu});
322 | this.toolStripMenuItem1.Font = new System.Drawing.Font("Segoe UI", 10F);
323 | this.toolStripMenuItem1.ForeColor = System.Drawing.Color.Black;
324 | this.toolStripMenuItem1.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
325 | this.toolStripMenuItem1.Name = "toolStripMenuItem1";
326 | this.toolStripMenuItem1.Size = new System.Drawing.Size(155, 27);
327 | this.toolStripMenuItem1.Text = "Chọn Thuật Toán";
328 | //
329 | // FCFS_menu
330 | //
331 | this.FCFS_menu.DoubleClickEnabled = true;
332 | this.FCFS_menu.Name = "FCFS_menu";
333 | this.FCFS_menu.Size = new System.Drawing.Size(193, 28);
334 | this.FCFS_menu.Text = "FCFS";
335 | this.FCFS_menu.Click += new System.EventHandler(this.FCFS_menu_Click);
336 | //
337 | // SJF_menu
338 | //
339 | this.SJF_menu.Name = "SJF_menu";
340 | this.SJF_menu.Size = new System.Drawing.Size(193, 28);
341 | this.SJF_menu.Text = "SJF";
342 | this.SJF_menu.Click += new System.EventHandler(this.SJF_menu_Click);
343 | //
344 | // Priority_menu
345 | //
346 | this.Priority_menu.Name = "Priority_menu";
347 | this.Priority_menu.Size = new System.Drawing.Size(193, 28);
348 | this.Priority_menu.Text = "Priority";
349 | this.Priority_menu.Click += new System.EventHandler(this.Priority_menu_Click);
350 | //
351 | // RR_menu
352 | //
353 | this.RR_menu.Name = "RR_menu";
354 | this.RR_menu.Size = new System.Drawing.Size(193, 28);
355 | this.RR_menu.Text = "Round Robin";
356 | this.RR_menu.Click += new System.EventHandler(this.RR_menu_Click);
357 | //
358 | // chọnThuậtToánTạiĐâyToolStripMenuItem
359 | //
360 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Enabled = false;
361 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Name = "chọnThuậtToánTạiĐâyToolStripMenuItem";
362 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.ShowShortcutKeys = false;
363 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Size = new System.Drawing.Size(216, 27);
364 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Text = "<---- Chọn thuật toán tại đây";
365 | //
366 | // panel2
367 | //
368 | this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
369 | this.panel2.Controls.Add(this.Algorithm);
370 | this.panel2.Location = new System.Drawing.Point(116, 65);
371 | this.panel2.Margin = new System.Windows.Forms.Padding(4);
372 | this.panel2.Name = "panel2";
373 | this.panel2.Size = new System.Drawing.Size(163, 42);
374 | this.panel2.TabIndex = 34;
375 | //
376 | // Algorithm
377 | //
378 | this.Algorithm.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
379 | this.Algorithm.ForeColor = System.Drawing.Color.Black;
380 | this.Algorithm.Location = new System.Drawing.Point(14, 8);
381 | this.Algorithm.Margin = new System.Windows.Forms.Padding(4);
382 | this.Algorithm.Name = "Algorithm";
383 | this.Algorithm.ReadOnly = true;
384 | this.Algorithm.Size = new System.Drawing.Size(134, 24);
385 | this.Algorithm.TabIndex = 0;
386 | this.Algorithm.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
387 | //
388 | // qInput
389 | //
390 | this.qInput.Location = new System.Drawing.Point(80, 2);
391 | this.qInput.Name = "qInput";
392 | this.qInput.Size = new System.Drawing.Size(83, 23);
393 | this.qInput.TabIndex = 35;
394 | this.qInput.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
395 | //
396 | // label5
397 | //
398 | this.label5.AutoSize = true;
399 | this.label5.Location = new System.Drawing.Point(4, 4);
400 | this.label5.Name = "label5";
401 | this.label5.Size = new System.Drawing.Size(66, 17);
402 | this.label5.TabIndex = 36;
403 | this.label5.Text = "Quantum";
404 | //
405 | // RRPanel
406 | //
407 | this.RRPanel.Controls.Add(this.qInput);
408 | this.RRPanel.Controls.Add(this.label5);
409 | this.RRPanel.Location = new System.Drawing.Point(116, 192);
410 | this.RRPanel.Name = "RRPanel";
411 | this.RRPanel.Size = new System.Drawing.Size(164, 32);
412 | this.RRPanel.TabIndex = 37;
413 | this.RRPanel.Visible = false;
414 | //
415 | // MainForm
416 | //
417 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
418 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
419 | this.ClientSize = new System.Drawing.Size(903, 590);
420 | this.Controls.Add(this.panel2);
421 | this.Controls.Add(this.menuStrip1);
422 | this.Controls.Add(this.txtConsole);
423 | this.Controls.Add(this.CountTime);
424 | this.Controls.Add(this.label2);
425 | this.Controls.Add(this.label3);
426 | this.Controls.Add(this.ClearBtn);
427 | this.Controls.Add(this.GanttChartPanel);
428 | this.Controls.Add(this.deleteBtn);
429 | this.Controls.Add(this.addBtn);
430 | this.Controls.Add(this.dataGridView1);
431 | this.Controls.Add(this.panel1);
432 | this.Controls.Add(this.label4);
433 | this.Controls.Add(this.RunBtn);
434 | this.Controls.Add(this.label1);
435 | this.Controls.Add(this.RRPanel);
436 | this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
437 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
438 | this.MainMenuStrip = this.menuStrip1;
439 | this.Margin = new System.Windows.Forms.Padding(4);
440 | this.Name = "MainForm";
441 | this.Text = "Nhóm Đảng Viên";
442 | this.Load += new System.EventHandler(this.MainForm_Load);
443 | ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
444 | this.panel1.ResumeLayout(false);
445 | this.panel1.PerformLayout();
446 | this.menuStrip1.ResumeLayout(false);
447 | this.menuStrip1.PerformLayout();
448 | this.panel2.ResumeLayout(false);
449 | this.panel2.PerformLayout();
450 | ((System.ComponentModel.ISupportInitialize)(this.qInput)).EndInit();
451 | this.RRPanel.ResumeLayout(false);
452 | this.RRPanel.PerformLayout();
453 | this.ResumeLayout(false);
454 | this.PerformLayout();
455 |
456 | }
457 |
458 | #endregion
459 |
460 | private System.Windows.Forms.TextBox txtConsole;
461 | private System.Windows.Forms.Label CountTime;
462 | private System.Windows.Forms.Label label2;
463 | private System.Windows.Forms.Label label3;
464 | private System.Windows.Forms.Button ClearBtn;
465 | private System.Windows.Forms.Panel GanttChartPanel;
466 | private System.Windows.Forms.Button deleteBtn;
467 | private System.Windows.Forms.Button addBtn;
468 | private System.Windows.Forms.DataGridView dataGridView1;
469 | private System.Windows.Forms.Panel panel1;
470 | private System.Windows.Forms.RadioButton PreemptiveBtn;
471 | private System.Windows.Forms.RadioButton NonPreemptiveBtn;
472 | private System.Windows.Forms.Label label4;
473 | private System.Windows.Forms.Button RunBtn;
474 | private System.Windows.Forms.Label label1;
475 | private System.Windows.Forms.MenuStrip menuStrip1;
476 | private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
477 | private System.Windows.Forms.ToolStripMenuItem FCFS_menu;
478 | private System.Windows.Forms.ToolStripMenuItem SJF_menu;
479 | private System.Windows.Forms.ToolStripMenuItem Priority_menu;
480 | private System.Windows.Forms.ToolStripMenuItem RR_menu;
481 | private System.Windows.Forms.Panel panel2;
482 | private System.Windows.Forms.TextBox Algorithm;
483 | private System.Windows.Forms.DataGridViewTextBoxColumn stt;
484 | private System.Windows.Forms.DataGridViewTextBoxColumn CotThoiGianDen;
485 | private System.Windows.Forms.DataGridViewTextBoxColumn CotThoiGianXuLy;
486 | private System.Windows.Forms.ToolStripMenuItem chọnThuậtToánTạiĐâyToolStripMenuItem;
487 | private System.Windows.Forms.ToolTip toolTip1;
488 | private System.Windows.Forms.NumericUpDown qInput;
489 | private System.Windows.Forms.Label label5;
490 | private System.Windows.Forms.Panel RRPanel;
491 | }
492 | }
493 |
494 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Form1.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.Data;
6 | using System.Drawing;
7 | using System.IO;
8 | using System.Linq;
9 | using System.Text;
10 | using System.Threading.Tasks;
11 | using System.Windows.Forms;
12 |
13 | namespace CPU_Scheduling_Algorithms
14 | {
15 | public partial class MainForm : System.Windows.Forms.Form
16 | {
17 | public MainForm()
18 | {
19 | InitializeComponent();
20 | }
21 | private void MainForm_Load(object sender, EventArgs e)
22 | {
23 | TextBoxWriter writer = new TextBoxWriter(txtConsole);
24 | Console.SetOut(writer);
25 | GanttChartPanel.Invalidate();
26 | GanttChartPanel.Controls.Clear();
27 | label2.Hide();
28 | //RRPanel.Visible = false;
29 | CountTime.Hide();
30 | txtConsole.Clear();
31 | txtConsole.Refresh();
32 | }
33 | //=============================================================================================================================
34 | //Struct
35 | public struct RGB
36 | {
37 | public int x, y, z;
38 | }
39 | public struct Process
40 | {
41 | public string id;
42 | public int arrival_time, burst_time, turnaround_time, exit_time, waiting_time, service_time, priority, remaining_time, i;
43 | }
44 | class ProcessInList
45 | {
46 | public Process Value { get; set; }
47 | }
48 | //=============================================================================================================================
49 | //Controller
50 | private void GanttChartPanel_Scroll(object sender, ScrollEventArgs e)
51 | {
52 | GanttChartPanel.Update();
53 | }
54 | private void FCFS_menu_Click(object sender, EventArgs e)
55 | {
56 | Algorithm.Text = "FCFS";
57 | if (dataGridView1.Columns["Priority"] != null)
58 | {
59 | dataGridView1.Columns.Remove("Priority");
60 | }
61 | RRPanel.Visible = false;
62 | panel1.Enabled = false;
63 | MainForm_Load(sender, e);
64 | }
65 |
66 | private void SJF_menu_Click(object sender, EventArgs e)
67 | {
68 | Algorithm.Text = "SJF";
69 | if (dataGridView1.Columns["Priority"] != null)
70 | {
71 | dataGridView1.Columns.Remove("Priority");
72 | }
73 | RRPanel.Visible = false;
74 | panel1.Enabled = true;
75 | MainForm_Load(sender, e);
76 | }
77 |
78 | private void Priority_menu_Click(object sender, EventArgs e)
79 | {
80 | Algorithm.Text = "Priority";
81 | if (dataGridView1.Columns["Priority"] == null)
82 | {
83 | dataGridView1.Columns.Add("Priority", "Độ ưu tiên");
84 | }
85 | RRPanel.Visible = false;
86 | panel1.Enabled = true;
87 | MainForm_Load(sender, e);
88 | }
89 |
90 | private void RR_menu_Click(object sender, EventArgs e)
91 | {
92 | Algorithm.Text = "Round Robin";
93 | if (dataGridView1.Columns["Priority"] != null)
94 | {
95 | dataGridView1.Columns.Remove("Priority");
96 | }
97 | RRPanel.Show();
98 | panel1.Enabled = false;
99 | MainForm_Load(sender, e);
100 | }
101 | private void startBtn_Click(object sender, EventArgs e)
102 | {
103 | Process[] process = new Process[100];
104 | int i = 0;
105 | int flag = 0;
106 |
107 | //Refresh
108 | this.Refresh();
109 | txtConsole.Clear();
110 | txtConsole.Refresh();
111 | GanttChartPanel.Controls.Clear();
112 |
113 | //Check type of Algorithm
114 | if (dataGridView1.RowCount <= 1)
115 | {
116 | //MessageBox.Show("Vui lòng nhập dữ liệu trước khi chạy!!!!");
117 | MessageBox.Show("Vui lòng nhập dữ liệu trước khi chạy!!!!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification);
118 | return;
119 | }
120 | if (Algorithm.Text == "SJF")
121 | {
122 | if (NonPreemptiveBtn.Checked == true)
123 | {
124 | flag = 0;
125 | Console.Write("SJF độc quyền");
126 | }
127 | else
128 | {
129 | flag = 1;
130 | Console.Write("SJF không độc quyền");
131 | }
132 | }
133 | if (Algorithm.Text == "FCFS")
134 | {
135 | flag = 2;
136 | Console.Write("FCFS");
137 | txtConsole.AppendText(Environment.NewLine);//<=== FIX ERROR: STACK OVERFLOW OF Console.Write();
138 | }
139 | if (Algorithm.Text == "Priority")
140 | {
141 | if (NonPreemptiveBtn.Checked == true)
142 | {
143 | flag = 3;
144 | Console.Write("Priority độc quyền");
145 | }
146 | else
147 | {
148 | flag = 4;
149 | Console.Write("Priority không độc quyền");
150 | }
151 | }
152 | if (Algorithm.Text == "Round Robin")
153 | {
154 | flag = 5;
155 | if (qInput.Value <= 0)
156 | {
157 | MessageBox.Show("Quantum phải lớn hơn 0!!!!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification);
158 | return;
159 | }
160 | Console.Write("RR");
161 | }
162 |
163 | //Take data from GridView
164 | if (Algorithm.Text == "Priority")
165 | {
166 | for (int row = 0; row < dataGridView1.Rows.Count; row++)
167 | {
168 | for (int col = 0; col < dataGridView1.Rows[row].Cells.Count; col++)
169 | {
170 | if (col == 0)
171 | {
172 | process[i].id = dataGridView1.Rows[row].Cells[col].Value.ToString();
173 | }
174 | if (col == 1)
175 | {
176 | process[i].arrival_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString());
177 | }
178 | if (col == 2)
179 | {
180 | process[i].burst_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString());
181 | }
182 | if (dataGridView1.Rows[row].Cells[col].Value != null)
183 | {
184 | if (col == 3)
185 | {
186 | process[i++].priority = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString());
187 | }
188 | }
189 | else
190 | {
191 | MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu đầu vào!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification);
192 | return;
193 | }
194 | }
195 | }
196 | }
197 | else
198 | {
199 | for (int row = 0; row < dataGridView1.Rows.Count; row++)
200 | {
201 | for (int col = 0; col < dataGridView1.Rows[row].Cells.Count; col++)
202 | {
203 | if (col == 0)
204 | {
205 | process[i].id = dataGridView1.Rows[row].Cells[col].Value.ToString();
206 | }
207 | if (col == 1)
208 | {
209 | process[i].arrival_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString());
210 | }
211 | if (col == 2)
212 | {
213 | process[i++].burst_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString());
214 | }
215 | }
216 | }
217 | }
218 |
219 |
220 | //Run function
221 | GanttChart(process, dataGridView1.Rows.Count, flag);
222 | }
223 | private void GanttChart(Process[] a, int n, int choose)
224 | {
225 | Graphics g = GanttChartPanel.CreateGraphics();
226 | Pen p = new Pen(Color.Black);
227 | Font f = new Font("Microsoft Sans Serif", 10);
228 |
229 | CountTime.Text = "" + 0;
230 | label2.Show();
231 | CountTime.Show();
232 | CountTime.Refresh();
233 | label2.Refresh();
234 |
235 | switch (choose)
236 | {
237 | case 0://SJF
238 | SJF(a, n);
239 | break;
240 | case 1://SRTF
241 | SRTF(a, n);
242 | break;
243 | case 2://FCFS
244 | FCFS(a, n);
245 | break;
246 | case 3://Piority Non-Preemptive
247 | Priority_NonPreemptive(a, n);
248 | break;
249 | case 4://Piority Preemptive
250 | Priority_Preemptive(a, n);
251 | break;
252 | case 5://RR
253 | RoundRobin(a, n);
254 | break;
255 | }
256 | }
257 |
258 | private void ClearBtn_Click(object sender, EventArgs e)
259 | {
260 | MainForm_Load(sender, e);
261 | GanttChartPanel.Controls.Clear();
262 | GanttChartPanel.Refresh();
263 | txtConsole.Clear();
264 | txtConsole.Refresh();
265 | }
266 |
267 | private void addBtn_Click(object sender, EventArgs e)
268 | {
269 | this.Refresh();
270 |
271 | dataGridView1.AutoGenerateColumns = false;
272 | dataGridView1.AllowUserToAddRows = false;
273 | dataGridView1.Columns[1].ReadOnly = false;
274 | if (Algorithm.Text == "Priority")
275 | {
276 | dataGridView1.Rows.Insert(dataGridView1.Rows.Count, new object[] { "P" + (dataGridView1.Rows.Count + 1), dataGridView1.Rows.Count, dataGridView1.Rows.Count + 1, dataGridView1.Rows.Count + 1 });
277 | }
278 | else
279 | {
280 | dataGridView1.Rows.Insert(dataGridView1.Rows.Count, new object[] { "P" + (dataGridView1.Rows.Count + 1), dataGridView1.Rows.Count, dataGridView1.Rows.Count + 1 });
281 |
282 | }
283 |
284 | }
285 |
286 | private void deleteBtn_Click(object sender, EventArgs e)
287 | {
288 | GanttChartPanel.Refresh();
289 | dataGridView1.AllowUserToAddRows = false;
290 | if (dataGridView1.Rows.Count != 2 && dataGridView1.Rows.Count != 0)
291 | {
292 | dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);
293 | }
294 | else
295 | {
296 | return;
297 | }
298 | }
299 | private void NonPreemptiveBtn_CheckedChanged(object sender, EventArgs e)
300 | {
301 | dataGridView1.Refresh();
302 | }
303 |
304 | //=============================================================================================================================
305 | //===============================================[ F U N C T I O N S ]=========================================================
306 | /*
307 |
308 | - A u t h o r -
309 | __ __ _ _ ___
310 | \ \ / / | \| | | \
311 | \ V / | .` | | |) |
312 | _\_/_ |_|\_| |___/
313 | _| """"|_|"""""|_|"""""|
314 | "`-0-0-'"`-0-0-'"`-0-0-'
315 |
316 |
317 | */
318 | //=============================================================================================================================
319 | //SJF độc quyền
320 | public static void swap(ref T a, ref T b)
321 | {
322 | T tmp = a;
323 | a = b;
324 | b = tmp;
325 | }
326 | public static void arrangeArrival(Process[] a, int n)
327 | {
328 | for (int i = 0; i < n - 1; i++)
329 | {
330 | for (int j = i + 1; j < n; j++)
331 | {
332 | if (a[i].arrival_time > a[j].arrival_time)
333 | {
334 | swap(ref a[i], ref a[j]);
335 | }
336 | }
337 | }
338 | }
339 | public static void completionTime(Process[] a, int n)
340 | {
341 | int temp, min_idx = -1;
342 | //Calculate first process
343 | a[0].exit_time = a[0].arrival_time + a[0].burst_time;
344 | a[0].turnaround_time = a[0].exit_time - a[0].arrival_time;
345 | a[0].waiting_time = a[0].turnaround_time - a[0].burst_time;
346 | //Calculate all process left
347 | for (int i = 1; i < n; i++)
348 | {
349 | temp = a[i - 1].exit_time;
350 | int low = a[i].burst_time;
351 | //Find min
352 | for (int j = i; j < n; j++)
353 | {
354 | if (temp >= a[j].arrival_time && low >= a[j].burst_time)
355 | {
356 | low = a[j].burst_time;
357 | min_idx = j;
358 | }
359 | }
360 | //Calculate min process
361 | a[min_idx].exit_time = temp + a[min_idx].burst_time;
362 | a[min_idx].turnaround_time = a[min_idx].exit_time - a[min_idx].arrival_time;
363 | a[min_idx].waiting_time = a[min_idx].turnaround_time - a[min_idx].burst_time;
364 | //Swap
365 | swap(ref a[min_idx], ref a[i]);
366 | }
367 | }
368 | public static double averageWaitingTime(Process[] a, int n)
369 | {
370 | double sum = 0;
371 | for (int i = 0; i < n; i++)
372 | {
373 | sum += a[i].waiting_time;
374 | }
375 | return sum / n;
376 | }
377 | public static void sortPID(Process[] a, int n)
378 | {
379 | for (int i = 0; i < n - 1; i++)
380 | {
381 | for (int j = i + 1; j < n; j++)
382 | {
383 | int compare = String.Compare(a[i].id, a[j].id);
384 | if (compare > 0)
385 | {
386 | swap(ref a[i], ref a[j]);
387 | }
388 | }
389 | }
390 | }
391 | public static double sumOfTime(Process[] a, int n)
392 | {
393 | double sum = 0;
394 | for (int i = 0; i < n; i++)
395 | {
396 | sum += a[i].burst_time;
397 | }
398 | return sum;
399 | }
400 | public void SJF(Process[] a, int n)
401 | {
402 | Random rand = new Random();
403 | RGB[] colorProcess = new RGB[100];
404 | int xx, yy, zz, i;
405 | arrangeArrival(a, n);
406 | completionTime(a, n);
407 |
408 | for (i = 0; i < n; i++)
409 | {
410 | //Random color
411 | xx = rand.Next(50, 255);
412 | yy = rand.Next(50, 255);
413 | zz = rand.Next(50, 255);
414 |
415 | colorProcess[i].x = xx;
416 | colorProcess[i].y = yy;
417 | colorProcess[i].z = zz;
418 | }
419 |
420 | for (i = 0; i < n; i++)
421 | {
422 | a[i].turnaround_time = a[i].exit_time - a[i].arrival_time;
423 | a[i].waiting_time = a[i].turnaround_time - a[i].burst_time;
424 | }
425 | int count = 0, remain = 0;
426 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular);
427 | for (i = 0; i < n; i++)
428 | {
429 |
430 | TextBox txb1 = new TextBox();
431 | if (a[i].burst_time == 1)
432 | {
433 | txb1.Location = new Point(count * 20, 2);
434 | txb1.Multiline = true;
435 | txb1.Font = font;
436 | txb1.Text = " " + a[i].id;
437 | txb1.Text += "\r\n";
438 | txb1.Text += "\r\n" + count;
439 | txb1.BorderStyle = 0;
440 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
441 | txb1.AutoSize = false;
442 | txb1.ReadOnly = true;
443 | txb1.Margin = new Padding(0, 0, 0, 0);
444 | txb1.Size = new Size(19, 50);
445 | GanttChartPanel.Controls.Add(txb1);
446 | count++;
447 | }
448 | else
449 | {
450 | remain = a[i].burst_time;
451 | txb1.Location = new Point(count * 20, 2);
452 | txb1.Multiline = true;
453 | txb1.Font = font;
454 | txb1.Text = " " + a[i].id;
455 | txb1.Text += "\r\n";
456 | txb1.Text += "\r\n" + count;
457 | txb1.BorderStyle = 0;
458 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
459 | txb1.AutoSize = false;
460 | txb1.ReadOnly = true;
461 | txb1.Margin = new Padding(0, 0, 0, 0);
462 | txb1.Size = new Size(20, 50);
463 | GanttChartPanel.Controls.Add(txb1);
464 | count++;
465 | remain--;
466 | }
467 | while (remain != 0)
468 | {
469 | if (remain == 1)
470 | {
471 | TextBox txb = new TextBox();
472 | txb.Location = new Point(count * 20, 2);
473 | txb.Multiline = true;
474 | txb.Font = font;
475 | txb.Text = " ";
476 | txb.BorderStyle = 0;
477 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
478 | txb.AutoSize = false;
479 | txb.ReadOnly = true;
480 | txb.Margin = new Padding(0, 0, 0, 0);
481 | txb.Size = new Size(19, 50);
482 | GanttChartPanel.Controls.Add(txb);
483 | count++;
484 | remain--;
485 | }
486 | else
487 | {
488 | TextBox txb = new TextBox();
489 | txb.Location = new Point(count * 20, 2);
490 | txb.Multiline = true;
491 | txb.Font = font;
492 | txb.Text = " ";
493 | txb.BorderStyle = 0;
494 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
495 | txb.AutoSize = false;
496 | txb.ReadOnly = true;
497 | txb.Margin = new Padding(0, 0, 0, 0);
498 | txb.Size = new Size(20, 50);
499 | GanttChartPanel.Controls.Add(txb);
500 | count++;
501 | remain--;
502 | }
503 | //Count time
504 | CountTime.Text = "" + count;
505 | CountTime.Refresh();
506 | }
507 | //Count time
508 | CountTime.Text = "" + count;
509 | CountTime.Refresh();
510 | }
511 |
512 | sortPID(a, n);
513 | txtConsole.AppendText(Environment.NewLine);
514 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n");
515 | for (i = 0; i < n; i++)
516 | {
517 | txtConsole.AppendText(Environment.NewLine);
518 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); ;
519 | }
520 | txtConsole.AppendText(Environment.NewLine);
521 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n));
522 |
523 | }
524 | //====================================================
525 | //SJF không độc quyền
526 | public void SRTF(Process[] a, int n)
527 | {
528 | Random rand = new Random();
529 | int[] processGantt = new int[100];
530 | RGB[] colorStandar = new RGB[100];
531 | RGB[] colorProcess = new RGB[100];
532 | int xx, yy, zz;
533 |
534 | int[] x = new int[100];
535 | int i, smallest, count = 0, time, end;
536 | double avg = 0, tt = 0;
537 |
538 | //Define color of Process
539 | for (i = 0; i < n; i++)
540 | {
541 | //Random color
542 | xx = rand.Next(70, 255);
543 | yy = rand.Next(70, 255);
544 | zz = rand.Next(50, 255);
545 | //Red - Green - Black
546 | colorStandar[i].x = xx;
547 | colorStandar[i].y = yy;
548 | colorStandar[i].z = zz;
549 | }
550 |
551 | for (i = 0; i < n; i++)
552 | x[i] = a[i].burst_time;
553 | //---------------------------
554 | //Calulating..
555 | x[9] = 9999; //Declare Max
556 | for (time = 0; count != n; time++)
557 | {
558 | smallest = 9;
559 | for (i = 0; i < n; i++)
560 | {
561 | if (a[i].arrival_time <= time && x[i] < x[smallest] && x[i] > 0)
562 | {
563 | processGantt[time] = i;
564 | colorProcess[time] = colorStandar[i];
565 | smallest = i;
566 | }
567 |
568 | }
569 | x[smallest]--;
570 | if (x[smallest] == 0)
571 | {
572 | count++;
573 |
574 | end = time + 1;
575 | a[smallest].exit_time = end;
576 | a[smallest].turnaround_time = end - a[smallest].arrival_time;
577 | }
578 | }
579 |
580 | for (i = 0; i < n; i++)
581 | {
582 | a[i].waiting_time = a[i].turnaround_time - a[i].burst_time;
583 | }
584 |
585 | for (i = 0; i < n; i++)
586 | {
587 | avg = avg + a[i].waiting_time;
588 | tt = tt + a[i].turnaround_time;
589 | }
590 | //---------------------------
591 | //Drawing...
592 | label2.Visible = true;
593 | CountTime.Visible = true;
594 | count = 0;
595 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular);
596 |
597 | for (i = 0; i <= time; i++)
598 | {
599 |
600 | if (i == time)
601 | {
602 | TextBox txb = new TextBox();
603 | txb.Location = new Point(i * 20, 2);
604 | txb.Multiline = true;
605 | txb.Font = font;
606 | txb.Text = string.Format(" ");
607 | txb.Text += "\r\n";
608 | txb.Text += "\r\n" + i;
609 | txb.BorderStyle = 0;
610 | txb.BackColor = System.Drawing.Color.FromArgb(255, 60, 90, 190);
611 | txb.AutoSize = false;
612 | txb.ReadOnly = true;
613 | txb.Margin = new Padding(0, 0, 0, 0);
614 | txb.Size = new Size(15, 50);
615 | GanttChartPanel.Controls.Add(txb);
616 | }
617 | else
618 | {
619 | if (i == 0)
620 | {
621 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50);
622 | }
623 | else
624 | {
625 | if (processGantt[i] != processGantt[i - 1])
626 | {
627 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50);
628 | }
629 | else
630 | {
631 | TextBox txb = new TextBox();
632 | txb.Location = new Point(i * 20, 2);
633 | txb.Multiline = true;
634 | txb.Font = font;
635 | txb.Text = string.Format(" ");
636 | txb.BorderStyle = 0;
637 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
638 | txb.AutoSize = false;
639 | txb.ReadOnly = true;
640 | txb.Margin = new Padding(0, 0, 0, 0);
641 | txb.Size = new Size(20, 50);
642 | GanttChartPanel.Controls.Add(txb);
643 | }
644 | }
645 | }
646 |
647 | //Count time
648 | CountTime.Text = "" + i;
649 | CountTime.Refresh();
650 |
651 | }
652 | //Show result
653 | txtConsole.AppendText(Environment.NewLine);
654 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n");
655 | for (i = 0; i < n; i++)
656 | {
657 | txtConsole.AppendText(Environment.NewLine);
658 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time);
659 | }
660 | txtConsole.AppendText(Environment.NewLine);
661 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n));
662 | }
663 |
664 | public void FCFS(Process[] a, int n)
665 | {
666 | arrangeArrival(a, n);
667 |
668 | // waiting time for first process is 0
669 | a[0].service_time = a[0].arrival_time;
670 | a[0].waiting_time = 0;
671 |
672 | // calculating waiting time
673 | for (int i = 1; i < n; i++)
674 | {
675 | a[i].service_time = a[i - 1].service_time + a[i - 1].burst_time;
676 | a[i].waiting_time = a[i].service_time - a[i].arrival_time;
677 | if (a[i].waiting_time < 0)
678 | {
679 | a[i].waiting_time = 0;
680 | }
681 | }
682 | // calculating turnaround time
683 | for (int i = 0; i < n; i++)
684 | {
685 | a[i].turnaround_time = a[i].burst_time + a[i].waiting_time;
686 | }
687 |
688 | drawProcess(a, n);
689 |
690 | //Show result
691 | txtConsole.AppendText(Environment.NewLine);
692 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n");
693 | for (int i = 0; i < n; i++)
694 | {
695 | txtConsole.AppendText(Environment.NewLine);
696 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time);
697 | }
698 | txtConsole.AppendText(Environment.NewLine);
699 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n));
700 | }
701 | public static void arrangePriority(Process[] a, int n)
702 | {
703 | for (int i = 1; i < n - 1; i++)
704 | {
705 | for (int j = i + 1; j < n; j++)
706 | {
707 | if (a[i].priority > a[j].priority)
708 | {
709 | swap(ref a[i], ref a[j]);
710 | }
711 | }
712 | }
713 | }
714 | public void Priority_NonPreemptive(Process[] a, int n)
715 | {
716 | Random rand = new Random();
717 | RGB[] colorProcess = new RGB[100];
718 | int xx, yy, zz, i;
719 |
720 | arrangePriority(a, n);
721 | // waiting time for first process is 0
722 | a[0].service_time = a[0].arrival_time;
723 | a[0].waiting_time = 0;
724 | // calculating waiting time
725 | for (i = 1; i < n; i++)
726 | {
727 | a[i].service_time = a[i - 1].service_time + a[i - 1].burst_time;
728 | a[i].waiting_time = a[i].service_time - a[i].arrival_time;
729 | if (a[i].waiting_time < 0)
730 | {
731 | a[i].waiting_time = 0;
732 | }
733 | }
734 | // calculating turnaround time
735 | for (i = 0; i < n; i++)
736 | {
737 | a[i].turnaround_time = a[i].burst_time + a[i].waiting_time;
738 | }
739 |
740 | for (i = 0; i < n; i++)
741 | {
742 | //Random color
743 | xx = rand.Next(50, 255);
744 | yy = rand.Next(50, 255);
745 | zz = rand.Next(50, 255);
746 |
747 | colorProcess[i].x = xx;
748 | colorProcess[i].y = yy;
749 | colorProcess[i].z = zz;
750 | }
751 |
752 | int count = 0, remain = 0;
753 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular);
754 | for (i = 0; i < n; i++)
755 | {
756 |
757 | TextBox txb1 = new TextBox();
758 | if (a[i].burst_time == 1)
759 | {
760 | txb1.Location = new Point(count * 20, 2);
761 | txb1.Multiline = true;
762 | txb1.Font = font;
763 | txb1.Text = " " + a[i].id;
764 | txb1.Text += "\r\n";
765 | txb1.Text += "\r\n" + count;
766 | txb1.BorderStyle = 0;
767 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
768 | txb1.AutoSize = false;
769 | txb1.ReadOnly = true;
770 | txb1.Margin = new Padding(0, 0, 0, 0);
771 | txb1.Size = new Size(19, 50);
772 | GanttChartPanel.Controls.Add(txb1);
773 | count++;
774 | }
775 | else
776 | {
777 | remain = a[i].burst_time;
778 | txb1.Location = new Point(count * 20, 2);
779 | txb1.Multiline = true;
780 | txb1.Font = font;
781 | txb1.Text = " " + a[i].id;
782 | txb1.Text += "\r\n";
783 | txb1.Text += "\r\n" + count;
784 | txb1.BorderStyle = 0;
785 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
786 | txb1.AutoSize = false;
787 | txb1.ReadOnly = true;
788 | txb1.Margin = new Padding(0, 0, 0, 0);
789 | txb1.Size = new Size(20, 50);
790 | GanttChartPanel.Controls.Add(txb1);
791 | count++;
792 | remain--;
793 | }
794 | while (remain != 0)
795 | {
796 | if (remain == 1)
797 | {
798 | TextBox txb = new TextBox();
799 | txb.Location = new Point(count * 20, 2);
800 | txb.Multiline = true;
801 | txb.Font = font;
802 | txb.Text = " ";
803 | txb.BorderStyle = 0;
804 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
805 | txb.AutoSize = false;
806 | txb.ReadOnly = true;
807 | txb.Margin = new Padding(0, 0, 0, 0);
808 | txb.Size = new Size(19, 50);
809 | GanttChartPanel.Controls.Add(txb);
810 | count++;
811 | remain--;
812 | }
813 | else
814 | {
815 | TextBox txb = new TextBox();
816 | txb.Location = new Point(count * 20, 2);
817 | txb.Multiline = true;
818 | txb.Font = font;
819 | txb.Text = " ";
820 | txb.BorderStyle = 0;
821 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
822 | txb.AutoSize = false;
823 | txb.ReadOnly = true;
824 | txb.Margin = new Padding(0, 0, 0, 0);
825 | txb.Size = new Size(20, 50);
826 | GanttChartPanel.Controls.Add(txb);
827 | count++;
828 | remain--;
829 | }
830 | //Count time
831 | CountTime.Text = "" + count;
832 | CountTime.Refresh();
833 | }
834 | //Count time
835 | CountTime.Text = "" + count;
836 | CountTime.Refresh();
837 | }
838 |
839 | sortPID(a, n);
840 | txtConsole.AppendText(Environment.NewLine);
841 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n");
842 | for (i = 0; i < n; i++)
843 | {
844 | txtConsole.AppendText(Environment.NewLine);
845 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); ;
846 | }
847 | txtConsole.AppendText(Environment.NewLine);
848 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n));
849 | }
850 | private void Priority_Preemptive(Process[] a, int n)
851 | {
852 | int i, smallest, count = 0, time, end;
853 | int[] x = new int[100];
854 | int[] y = new int[100];
855 |
856 | Random rand = new Random();
857 | int[] processGantt = new int[100];
858 | RGB[] colorStandar = new RGB[100];
859 | RGB[] colorProcess = new RGB[100];
860 | int xx, yy, zz;
861 |
862 | for (i = 0; i < n; i++)
863 | {
864 | x[i] = a[i].burst_time;
865 | y[i] = a[i].priority;
866 | }
867 |
868 | //Define color of Process
869 | for (i = 0; i < n; i++)
870 | {
871 | //Random color
872 | xx = rand.Next(70, 255);
873 | yy = rand.Next(70, 255);
874 | zz = rand.Next(50, 255);
875 | //Red - Green - Black
876 | colorStandar[i].x = xx;
877 | colorStandar[i].y = yy;
878 | colorStandar[i].z = zz;
879 | }
880 |
881 |
882 | //-------------------------
883 | //Declare max
884 | x[9] = 1000;
885 | y[9] = 10;
886 |
887 | for (time = 0; count != n; time++)
888 | {
889 | smallest = 9;
890 |
891 | for (i = 0; i < n; i++)
892 | {
893 | if (a[i].arrival_time <= time && y[i] < y[smallest] && x[i] > 0)
894 | {
895 | smallest = i;
896 | processGantt[time] = i;
897 | colorProcess[time] = colorStandar[i];
898 | }
899 | }
900 | x[smallest]--;
901 | if (x[smallest] == 0)//Process already done
902 | {
903 | count++;
904 |
905 | end = time + 1;
906 | a[smallest].exit_time = end;
907 | a[smallest].turnaround_time = end - a[smallest].arrival_time;
908 | }
909 |
910 | for (i = 0; i < n; i++)
911 | {
912 | a[i].waiting_time = a[i].turnaround_time - a[i].burst_time;
913 | }
914 | }
915 |
916 |
917 | //---------------------------
918 | //Drawing...
919 | label2.Visible = true;
920 | CountTime.Visible = true;
921 | count = 0;
922 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular);
923 |
924 | for (i = 0; i <= time; i++)
925 | {
926 |
927 | if (i == time)
928 | {
929 | TextBox txb = new TextBox();
930 | txb.Location = new Point(i * 20, 2);
931 | txb.Multiline = true;
932 | txb.Font = font;
933 | txb.Text = string.Format(" ");
934 | txb.Text += "\r\n";
935 | txb.Text += "\r\n" + i;
936 | txb.BorderStyle = 0;
937 | txb.BackColor = System.Drawing.Color.FromArgb(255, 60, 90, 190);
938 | txb.AutoSize = false;
939 | txb.ReadOnly = true;
940 | txb.Margin = new Padding(0, 0, 0, 0);
941 | txb.Size = new Size(15, 50);
942 | GanttChartPanel.Controls.Add(txb);
943 | }
944 | else
945 | {
946 | if (i == 0)
947 | {
948 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50);
949 | }
950 | else
951 | {
952 | if (processGantt[i] != processGantt[i - 1])
953 | {
954 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50);
955 | }
956 | else
957 | {
958 | TextBox txb = new TextBox();
959 | txb.Location = new Point(i * 20, 2);
960 | txb.Multiline = true;
961 | txb.Font = font;
962 | txb.Text = string.Format(" ");
963 | txb.BorderStyle = 0;
964 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
965 | txb.AutoSize = false;
966 | txb.ReadOnly = true;
967 | txb.Margin = new Padding(0, 0, 0, 0);
968 | txb.Size = new Size(20, 50);
969 | GanttChartPanel.Controls.Add(txb);
970 | }
971 | }
972 | }
973 |
974 | //Count time
975 | CountTime.Text = "" + i;
976 | CountTime.Refresh();
977 |
978 | }
979 | //Show result
980 | float S_wait = 0, S_turnarround = 0;
981 | txtConsole.AppendText(Environment.NewLine);
982 | Console.Write("Process ID\tWaiting Time\tTunarround Time");
983 | for (i = 0; i < n; i++)
984 | {
985 | txtConsole.AppendText(Environment.NewLine);
986 | //Console.Write(" {0}\t {1,10}\t\t{2,-10}\t {3,-20}", a[i].id, a[i].arrival_time, a[i].burst_time, a[i].priority);
987 | Console.Write(" {0}\t\t", a[i].id);
988 | Console.Write(" {0}\t\t{1}", a[i].waiting_time, a[i].turnaround_time);
989 | S_wait += (float)a[i].waiting_time;
990 | S_turnarround += (float)a[i].turnaround_time;
991 | }
992 | txtConsole.AppendText(Environment.NewLine);
993 | Console.Write("Average waiting time: {0}", S_wait / n);
994 | txtConsole.AppendText(Environment.NewLine);
995 | Console.Write("Average turnarround time: {0}", S_turnarround / n);
996 | }
997 |
998 | public int NextArrivalTime(Process[] a, int current, int n)
999 | {
1000 | for (int i = current + 1; i < n; i++)
1001 | {
1002 | if (a[i].arrival_time > a[current].arrival_time)
1003 | {
1004 | return i;
1005 | }
1006 | }
1007 | return -1;
1008 | }
1009 | public int totalTime(Process[] a, int n)
1010 | {
1011 | int S = 0;
1012 | for (int i = 0; i < n; i++)
1013 | {
1014 | S += a[i].burst_time;
1015 | }
1016 | return S;
1017 | }
1018 |
1019 | public void RoundRobin(Process[] a, int n)
1020 | {
1021 | int quantum = (int)qInput.Value;
1022 |
1023 | Random rand = new Random();
1024 | int[] processGantt = new int[99999];
1025 | int[] processTime = new int[99999];
1026 | int[] processLength = new int[99999];
1027 | RGB[] colorStandar = new RGB[99999];
1028 | RGB[] colorProcess = new RGB[99999];
1029 | int xx, yy, zz;
1030 |
1031 | int i, count = 0, time;
1032 | double avg = 0, tt = 0;
1033 |
1034 | for (i = 0; i < n; i++)
1035 | {
1036 | a[i].i = i;
1037 | a[i].remaining_time = a[i].burst_time;
1038 | }
1039 |
1040 | //Define color of Process
1041 | for (i = 0; i < n; i++)
1042 | {
1043 |
1044 | do
1045 | {
1046 | //Random color
1047 | xx = rand.Next(0, 255);
1048 | yy = rand.Next(0, 255);
1049 | zz = rand.Next(0, 255);
1050 | } while (xx == yy && yy == zz || (xx + yy + zz) / 3 <= 100);
1051 |
1052 | //Red - Green - Black
1053 | colorStandar[i].x = xx;
1054 | colorStandar[i].y = yy;
1055 | colorStandar[i].z = zz;
1056 | }
1057 |
1058 | //---------------------------
1059 | // sort arrvial time
1060 | arrangeArrival(a, n);
1061 | //---------------------------
1062 | //Calulating..
1063 | i = 0;
1064 | int current_pos, last_pos = -1;
1065 | a[i].waiting_time = 0;
1066 | current_pos = a[i].arrival_time;
1067 | int next_arrival_pos = NextArrivalTime(a, i, n);
1068 |
1069 | LinkedList list = new LinkedList();//Sử dụng giống Queue :V
1070 | list.AddLast(a[i]);
1071 | for (int tmp = i + 1; tmp < n; tmp++)
1072 | {
1073 | if (a[tmp].arrival_time == a[i].arrival_time)
1074 | {
1075 | list.AddLast(a[tmp]);
1076 | }
1077 | }
1078 |
1079 | string seq = "";
1080 | Console.Write("");
1081 | while (list.Count() != 0)
1082 | {
1083 | Process current = list.First();//check first position
1084 | last_pos = current.i;//Store last position
1085 | seq += (last_pos + 1) + "->";//Test sequence
1086 |
1087 | //Store infomations to draw Grantt chart
1088 | processGantt[current_pos] = last_pos + 1;//Seq
1089 | processTime[current_pos] = current_pos;//Time line
1090 | colorProcess[current_pos] = colorStandar[last_pos];//Color for each process
1091 |
1092 |
1093 | list.RemoveFirst();
1094 | next_arrival_pos = NextArrivalTime(a, i, n);//Find next process
1095 | if (next_arrival_pos != -1)
1096 | {
1097 | if (current.remaining_time <= quantum)
1098 | {
1099 | current_pos += current.remaining_time;
1100 | current.waiting_time = current_pos - current.burst_time - current.arrival_time;
1101 | current.turnaround_time = current.burst_time + current.waiting_time;
1102 |
1103 | i++;
1104 | if (i >= n)
1105 | {
1106 | break;
1107 | }
1108 | list.AddLast(a[i]);
1109 | }
1110 | else
1111 | {
1112 | current_pos += quantum;
1113 | current.remaining_time -= quantum;
1114 | if (a[next_arrival_pos].arrival_time == current_pos)
1115 | {
1116 | for (int z = 0; z < n; z++)
1117 | {
1118 | if (current_pos > a[z].arrival_time && z != next_arrival_pos)
1119 | {
1120 | list.AddLast(a[z]);
1121 | i = z;
1122 | }
1123 | }
1124 | list.AddLast(current);
1125 | list.AddLast(a[next_arrival_pos]);
1126 | i = next_arrival_pos;
1127 | for (int z = next_arrival_pos + 1; z < n; z++)
1128 | {
1129 | if (a[z].arrival_time == a[next_arrival_pos].arrival_time)
1130 | {
1131 | list.AddLast(a[z]);
1132 | i = z;
1133 | }
1134 | }
1135 | }
1136 | else
1137 | {
1138 | if (a[next_arrival_pos].arrival_time < current_pos)
1139 | {
1140 | list.AddLast(a[next_arrival_pos]);
1141 | i = next_arrival_pos;
1142 | for (int z = next_arrival_pos + 1; z < n; z++)
1143 | {
1144 | if (a[z].arrival_time < current_pos)
1145 | {
1146 | list.AddLast(a[z]);
1147 | i = z;
1148 | }
1149 | }
1150 | list.AddLast(current);
1151 |
1152 | }
1153 | }
1154 | }
1155 | }
1156 | else
1157 | {
1158 | if (current.remaining_time <= quantum)
1159 | {
1160 | current_pos += current.remaining_time;
1161 | current.waiting_time = current_pos - current.burst_time - current.arrival_time;
1162 | current.turnaround_time = current.burst_time + current.waiting_time;
1163 | }
1164 | else
1165 | {
1166 | current_pos += quantum;
1167 | current.remaining_time -= quantum;
1168 | list.AddLast(current);
1169 | }
1170 | }
1171 |
1172 | a[last_pos] = current;
1173 | }
1174 | //Tính toán các thời gian trung bình
1175 | for (i = 0; i < n; i++)
1176 | {
1177 | avg = avg + a[i].waiting_time;
1178 | tt = tt + a[i].turnaround_time;
1179 | }
1180 | //---------------------------
1181 | //Drawing...
1182 | label2.Visible = true;
1183 | CountTime.Visible = true;
1184 | count = 0;
1185 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular);
1186 | time = totalTime(a, n);
1187 | int last_color = -1;
1188 | for (i = 0; i <= time; i++)
1189 | {
1190 | if (processTime[i] == i)
1191 | {
1192 | TextBox txb = new TextBox();
1193 | txb.Location = new Point(i * 22 + 2, 2);
1194 | txb.Name = string.Format("P{0}", i);
1195 | txb.Tag = string.Format("[{0}]", i);
1196 | txb.Multiline = true;
1197 | txb.BorderStyle = 0;
1198 | txb.Font = font;
1199 | txb.Text = string.Format("P{0}", processGantt[i]);
1200 | txb.Text += "\r\n";
1201 | txb.Text += "\r\n" + i;
1202 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
1203 | txb.AutoSize = false;
1204 | txb.ReadOnly = true;
1205 | txb.Margin = new Padding(0, 0, 0, 0);
1206 | txb.Size = new Size(22, 50);
1207 | GanttChartPanel.Controls.Add(txb);
1208 | last_color = i;
1209 | }
1210 | else
1211 | {
1212 | TextBox txb = new TextBox();
1213 | txb.Location = new Point(i * 22, 2);
1214 | txb.Multiline = true;
1215 | txb.Font = font;
1216 | txb.Text = string.Format(" ");
1217 | txb.BorderStyle = 0;
1218 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[last_color].x, colorProcess[last_color].y, colorProcess[last_color].z);
1219 | txb.AutoSize = false;
1220 | txb.ReadOnly = true;
1221 | txb.Margin = new Padding(0, 0, 0, 0);
1222 | txb.Size = new Size(22, 50);
1223 | GanttChartPanel.Controls.Add(txb);
1224 | }
1225 |
1226 | //Count time
1227 | CountTime.Text = "" + i;
1228 | CountTime.Refresh();
1229 | }
1230 | //Show result
1231 | txtConsole.AppendText(Environment.NewLine);
1232 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n");
1233 | for (i = 0; i < n; i++)
1234 | {
1235 | txtConsole.AppendText(Environment.NewLine);
1236 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time);
1237 | }
1238 | txtConsole.AppendText(Environment.NewLine);
1239 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n));
1240 | }
1241 |
1242 | public void drawProcess(Process[] a, int n)
1243 | {
1244 | Font font = new Font("Microsoft Sans Serif", 10);
1245 | RGB[] colorProcess = new RGB[100];
1246 | Random rand = new Random();
1247 | int count = 0, i, remain = 0;
1248 | //Define color of Process
1249 | for (i = 0; i < n; i++)
1250 | {
1251 | //Random color
1252 | //Red - Green - Black
1253 | colorProcess[i].x = rand.Next(70, 255);
1254 | colorProcess[i].y = rand.Next(70, 255);
1255 | colorProcess[i].z = rand.Next(50, 255);
1256 | }
1257 | for (i = 0; i < n; i++)
1258 | {
1259 |
1260 | TextBox txb1 = new TextBox();
1261 | if (a[i].burst_time == 1)
1262 | {
1263 | txb1.Location = new Point(count * 20, 2);
1264 | txb1.Multiline = true;
1265 | txb1.Font = font;
1266 | txb1.Font = font;
1267 | txb1.Text = " " + a[i].id;
1268 | txb1.Text += "\r\n";
1269 | txb1.Text += "\r\n" + count;
1270 | txb1.BorderStyle = 0;
1271 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
1272 | txb1.AutoSize = false;
1273 | txb1.ReadOnly = true;
1274 | txb1.Margin = new Padding(0, 0, 0, 0);
1275 | txb1.Size = new Size(19, 50);
1276 | GanttChartPanel.Controls.Add(txb1);
1277 | count++;
1278 | }
1279 | else
1280 | {
1281 | remain = a[i].burst_time;
1282 | txb1.Location = new Point(count * 20, 2);
1283 | txb1.Multiline = true;
1284 | txb1.Font = font;
1285 | txb1.Text = " " + a[i].id;
1286 | txb1.Text += "\r\n";
1287 | txb1.Text += "\r\n" + count;
1288 | txb1.BorderStyle = 0;
1289 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
1290 | txb1.AutoSize = false;
1291 | txb1.ReadOnly = true;
1292 | txb1.Margin = new Padding(0, 0, 0, 0);
1293 | txb1.Size = new Size(20, 50);
1294 | GanttChartPanel.Controls.Add(txb1);
1295 | count++;
1296 | remain--;
1297 | }
1298 | while (remain != 0)
1299 | {
1300 | if (remain == 1)
1301 | {
1302 | TextBox txb = new TextBox();
1303 | txb.Location = new Point(count * 20, 2);
1304 | txb.Multiline = true;
1305 | txb.Font = font;
1306 | txb.Text = " ";
1307 | txb.BorderStyle = 0;
1308 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
1309 | txb.AutoSize = false;
1310 | txb.ReadOnly = true;
1311 | txb.Margin = new Padding(0, 0, 0, 0);
1312 | txb.Size = new Size(19, 50);
1313 | GanttChartPanel.Controls.Add(txb);
1314 | count++;
1315 | remain--;
1316 | }
1317 | else
1318 | {
1319 | TextBox txb = new TextBox();
1320 | txb.Location = new Point(count * 20, 2);
1321 | txb.Multiline = true;
1322 | txb.Font = font;
1323 | txb.Text = " ";
1324 | txb.BorderStyle = 0;
1325 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
1326 | txb.AutoSize = false;
1327 | txb.ReadOnly = true;
1328 | txb.Margin = new Padding(0, 0, 0, 0);
1329 | txb.Size = new Size(20, 50);
1330 | GanttChartPanel.Controls.Add(txb);
1331 | count++;
1332 | remain--;
1333 | }
1334 | //Count time
1335 | CountTime.Text = "" + count;
1336 | CountTime.Refresh();
1337 | }
1338 | //Count time
1339 | CountTime.Text = "" + count;
1340 | CountTime.Refresh();
1341 | }
1342 | }
1343 | public void drawProcess(int[] processGantt, RGB[] colorProcess, Font font, int i, int k, int sizex, int sizey)
1344 | {
1345 | TextBox txb = new TextBox();
1346 | txb.Location = new Point(k * 20, 2);
1347 | txb.Name = string.Format("P{0}", k);
1348 | txb.Tag = string.Format("[{0}]", k);
1349 | txb.Multiline = true;
1350 | txb.BorderStyle = 0;
1351 | txb.Font = font;
1352 | txb.Text = string.Format("P{0}", processGantt[i] + 1);
1353 | txb.Text += "\r\n";
1354 | txb.Text += "\r\n" + i;
1355 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z);
1356 | txb.AutoSize = false;
1357 | txb.ReadOnly = true;
1358 | txb.Margin = new Padding(0, 0, 0, 0);
1359 | txb.Size = new Size(sizex, sizey);
1360 | GanttChartPanel.Controls.Add(txb);
1361 | }
1362 | }
1363 | }
1364 | //End~~~
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Form1.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 162, 14
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | True
131 |
132 |
133 | 27, 14
134 |
135 |
136 |
137 |
138 | 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
884 |
885 |
886 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace CPU_Scheduling_Algorithms
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new MainForm());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("CPU Scheduling Algorithms")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("CPU Scheduling Algorithms")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("1f088284-c921-4395-be46-ee2effa6cf77")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace CPU_Scheduling_Algorithms.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CPU_Scheduling_Algorithms.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap _22_hinh_anh_tuyet_dep_den_tu_bom_tan_phim_hoat_hinh_your_name_1486799919_7 {
67 | get {
68 | object obj = ResourceManager.GetObject("22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap _99f76b3de162688defe73255366828e2 {
77 | get {
78 | object obj = ResourceManager.GetObject("99f76b3de162688defe73255366828e2", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\99f76b3de162688defe73255366828e2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | namespace CPU_Scheduling_Algorithms.Properties
13 | {
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
17 | {
18 |
19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
20 |
21 | public static Settings Default
22 | {
23 | get
24 | {
25 | return defaultInstance;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/QueueExtension.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace CPU_Scheduling_Algorithms
8 | {
9 | public static class Extensions
10 | {
11 | public static Queue SetFirstTo(this Queue q, T value)
12 | {
13 | T[] array = q.ToArray();
14 | array[0] = value;
15 | return new Queue(array);
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Resources/22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/CPU Scheduling Algorithms/Resources/22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Resources/99f76b3de162688defe73255366828e2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/CPU Scheduling Algorithms/Resources/99f76b3de162688defe73255366828e2.jpg
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/Resources/commuist.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/CPU Scheduling Algorithms/Resources/commuist.ico
--------------------------------------------------------------------------------
/CPU Scheduling Algorithms/TextBoxStreamWriter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using System.Windows.Forms;
7 | using System.IO;
8 |
9 | namespace CPU_Scheduling_Algorithms
10 | {
11 | public class TextBoxWriter : TextWriter
12 | {
13 | // The control where we will write text.
14 | private Control MyControl;
15 | public TextBoxWriter(Control control)
16 | {
17 | MyControl = control;
18 | }
19 |
20 | public override void Write(char value)
21 | {
22 | MyControl.Text += value;
23 | }
24 |
25 | public override void Write(string value)
26 | {
27 | MyControl.Text += value;
28 | }
29 |
30 | public override Encoding Encoding
31 | {
32 | get { return Encoding.Unicode; }
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Vũ Đạt
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Pics/FCFS.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/FCFS.jpg
--------------------------------------------------------------------------------
/Pics/Priority_nonPr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/Priority_nonPr.jpg
--------------------------------------------------------------------------------
/Pics/Priority_pr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/Priority_pr.jpg
--------------------------------------------------------------------------------
/Pics/RR.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/RR.jpg
--------------------------------------------------------------------------------
/Pics/SJF_nonPr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/SJF_nonPr.jpg
--------------------------------------------------------------------------------
/Pics/SJF_pr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/SJF_pr.jpg
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CPU-Scheduling-Algorithms
2 | *Chương trình minh họa các giải thuật định thời CPU*
3 | *CPU Scheduling Algorithms Visualization*
4 | Bao gồm các thuật toán sau:
5 | - FCFS
6 | - SJF
7 | - SRTF
8 | - Priority độc quyền (non-preemptive)
9 | - Priority không độc quyền (preemptive)
10 | - Round Robin
11 |
12 |
13 | ## Các hình ảnh minh họa cho chương trình
14 |
15 | 
16 | 
17 | 
18 | 
19 | 
20 | 
21 |
22 | ## Contributing
23 | - Mọi đóng góp để phát triển source code đều dc chào đón. Để thực hiện các thay đổi code, hãy tạo 1 Issue để thảo luận về điều bạn muốn thay đổi trong project này
24 | - Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
25 | ## License
26 | [MIT](https://choosealicense.com/licenses/mit/)
27 |
28 |
29 | ----
30 | 
31 |
--------------------------------------------------------------------------------