Learn Operating System Development using Minix 2 or 3? [closed] - operating-system

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I took a class this spring about generic operating system theories and principles, and now I'd like to spend the summer working through Tanenbaum's Operating Systems book, looking through Minix source, and getting a general idea of actual OS implementation.
There are two OS professors at school and I went to them to ask about borrow Tanenbaum's book. Interestingly, one said I should use the older, second version of the book, and focus on Minix 2 because it's overall simpler and has less source to understand (and thus would be easier to learn from without information overload). The other prof said she didn't think this would be a problem, and that I should go with Minix 3 and the newest edition of his book so that I get to see a more modern implementation.
What does Stack Overflow think? Anyone here have experiences with both versions of Minix? I would like to learn the principles of making an actual OS, but I also don't want massive information overload that will keep me from actually understanding what the code as a whole is up to.

I took Minix 2 way. It was understandable and paved way for Minix 3.
About HelenOS - they take unrealistic goals - bug free and formal description. Both are not achievable.
HtH

If you want to go deep into sources of microkernel-based OS I would suggest you to have a look on HelenOS, a newer but still relatively simple operating system not burdened with UNIX semantics and API. Alas, there is no book (as the Tanenbaum) about it yet, but the sources are well documented.

Interesting I just come across this old post so sorry for what seems to be a bump.
When I was at university, sometime ago, we had an operating systems lab we used PC's with Linux for the development and 68000 based machines with boot roms for the testing I believe they were VMS based.
The software environment was either Modula2 (the first and second year language) or C/C++ (second and third year language) everything was cross complied and loaded via script ready for the test machine to be reset to boot the new OS.
Anyway to cut this short, we used some sort of educational framework which was using the Minix2 sources so you could write parts of the OS for a project without having to write the whole lot.
I have been trying to find the official sources and documentation for this environment for sometime, I am sure it's on the web somewhere and possibly updated/maintained.

Related

Best IDE for PLC ladder programming [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Recently I trying to learn Ladder Logic programming for PLCs, but I want to know if there is any IDE to create Ladder programs better that Step7 or cx-programmer? Is there any plugin for Visual Studio or Netbeans that I can use? Finally, is it better to work with PLCs under Linux or Microsoft Windows?
UPDATE 1 : After googling about this, I found out that Ladder programming is not depend on the PLC brand or its model, so I did not mentioned any brand in my question.
What is your goal? In almost all cases, your IDE is dictated by the PLC manufacturer, and your PLC brand is spec'd by the customer when they buy the machine. They spec the PLC because they need to have something that they can go online with for maintenance and troubleshooting. Since the software is proprietary and absurdly expensive, they don't want to get a new software license for every machine in the plant and have to relearn new software, while they are bleeding money of manufacturing downtime.
So if your goal is to enter the industry, you want to find out what plants in country tend to use. In North America it's usually Allen-Bradley a.k.a Rockwell Automation, which is programmed with RSLogix 5000 (edit: the recent versions of RSLogix 5000 have been rebranded as Studio 5000). In Europe, it's typically Seimens, but I have no experience with them.
PLC IDEs are almost always picked hardware first. With some obscure exceptions, you pick the hardware you want to run, and this determines the IDE. The IDEs are all proprietary and unique to each hardware platform. Rockwell Automation alone has three different IDEs to support their hardware lines, all licensed individually and very expensive.
If Omron is the most common in your area, it's a good idea to start with them. Once you get used to one type of PLC, learning more is really easy.
If you don't mind which PLC platform you're using, I really enjoyed my time with RSLogix. They have a free, training-level suite available here:
http://www.ab.com/linked/programmablecontrol/plc/micrologix/downloads.html
I prefer RSLogix 5000. It's one of the easiest to work with and has User Defined Types and Add On Instructions to help with reusability.
ABB has Control Builder (which is the product that I work on), AFAIK when somebody buys our AC800 controller they get the CB for free, at least the so called "Compact version" which is file based. The CB has ladder diagrams as well as all other 1131 languages plus some extensions like Function Diagrams.
Disclaimer Sorry if it sounded like an ad, just very passionate with what I work on.
I am primarily a high level language programmer, but have also done development on various PLC /PAC platforms, including Rockwell, Siemens, and Beckhoff.
If your goal is to merely get an introduction to ladder, nearly anything will due. You can download Beckhoffs TwinCAT software for free. It is only a 30-day license, but you can just continually reinstall every 30 days without issue. The great part of TwinCAT is that it runs on a Windows PC, so you can develop and test code directly on the PC and don't need actual Beckhoff hardware to play with. The ladder is a bit quirky, but the statement list portion is by far one of the more powerful. If you are a C-programmer you will feel very comfortable with Beckhoff, because they have duplicated a lot of C-like functions (e.g. memcpy and setcpy) into their libraries.
The Beckhoff platform is not all that widespread, but it would allow you to learn the principals of ladder and PLC/PAC programming.

What are the Pros and Cons of ICU? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
My team is tasked with implementing Unicode in our software, which is well over a million lines of code. We support an MFC Client and a Server on Windows, AIX or Solaris with an Oracle or SQL Server database. ICU looks like a very helpful tool. What are the pros and cons of using ICU? Does ICU work as advertised without major bugs?
A data point: Our (yes, that's a disclaimer) list of users and bugs is all on our project site.
IMBO (biased):
Pros:
works as advertised, comprehensive.
Mature: 10+ years now, with a good stability policy and very active development.
Uses latest Unicode+CLDR+BCP47+other standards.
Compiles basically everywhere. C/C++/J and called by/implements python,perl,php,…
Open source, with an increasing diversity of contributors.
Comes with all needed data for the above (see below, under cons), yet customizable. (can add custom data)
Cons:
Needs better documentation (we try- anyone want to help?).
Lots of APIs- "it's too big #1" hard to know which one to use, even if it does what you want.
Used by lots of types of programs, from embedded devices, smartphones through major desktop apps through databases and operating systems and enterprise apps: So, there may be multiple ways to do something.
Comes with all needed data for the above! "it's too big #2" (see above, under pros), yet customizable. (can be trimmed down to size)
ICU is terrible: avoid if at all possible.
Despite its age, basic things in it are broken, for example in this question: Fixing regex to work around ICU/RegexKitLite bug
Time handling is broken as times are underspecified: you can't distinguish a DST from a non-DST time in a reliable way in many APIs.
It's freaking huge.
The documentation needs a lot of work. Less-used features are often unusable because there's no way to figure out the right way to use them. I spent days trying to get transliteration to work as explained and eventually gave up.
It likes to work in UTF-16, the worst of all possible worlds.
Support is unresponsive to problems.
In my experience, it's not until you're most of the way through a project that you begin to discover the insidious flaws that will take 90% of your time.
For many people, there is no alternative so you're stuck with it.

Advantages & Disadvantages of DotNetNuke? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
If you have worked with DotNetNuke, what are advantages and disadvantages that you have come across? What are alternative Content Management Systems that you have used that you find are better or worst. I'm trying to get a feel of what Content Management System Frameworks people are using and the advantages and disadvantages of them.
Thanks,
XaiSoft
This post may help as it has covered some of this info!
DotNetNuke works well, and has a wide variety of addins that are available for purchase from various vendors. It is also open source which is nice, as it allows you to troubleshoot issues to a deeper level then if it was closed source.
We didn't spend a lot of time researching CMS systems but this past summer we couldn't find anything with the functionality of DotNetNuke which targets the .net framework. If your not tied to .net then there are a ton of options available.
DNN is very very dynamic in terms of functionality, features and security. There's is nothing like it. However there are a few drawbacks that i felt while using it.
The biggest drawback in my opinion is the response time of a DNN using sites. The code itself is very obsolete and you need to lock yourself and scour on each and every coding details before using DNN. One more is the URL dependency, if you need to change your domain name to another your old database will be of no use.
There are a lot of new promising CMS extension in Dot NET market and Sageframe, in my opinion, is the best of them. I have been using this extension for quite a time now and I am quite fascinated by its features though still in beta.
DotNetNuke is quite powerful. It's biggest advantage is the inline editing of site content, in my opinion. It's biggest disadvantage is that it is pretty resource intensive compared to other CMS systems.
Here's a comparison I wrote last month:
http://www.logicalvue.com/blog/2009/01/cms-shootout-dotnetnuke-vs-joomla-vs-wordpress/
The biggest disadvantage is the missing support for multiple languages.
Yes, you can install multiple languages but you can't write seperate content for each installed language...
It's not hard to write such a module yourself but the other problem is the URLs.
You can use the 'Human Friendly' option but yet again, this does not support multiple languages.
For instance /Products/tabid/57/language/en-US/Default.aspx becomes products.aspx but there isn't a possibility to include the language like this /en-US/products.aspx
I know there are 3th party tools like UrlMaster which covers this up but still I think this should be available in such a framework.
The biggest advantage is the ease of developing your own modules! If a functionality isn't available, you can write your own module without any problems!
.Net Nuke is not good for developing projects.
Microsoft is releasing lot of versiond and including lot of lauguages.
So how developers will learn all the things...
This is very bad for developers.....

Resources to develop an operating system [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I'm planning to write an operating system and I don't know very much about operating systems. Are there any good resources or books to read in order for me to learn? What are your recommendations?
We used Andrew Tannenbaum's Modern Operating Systems at the university I attended. I highly recommend it for it's clear explanations of the tradeoffs inherent in many of the design decisions that you'll run up against. This book is a little bit more "fair and balanced" than the Minix book.
I also recommend this book because, despite his net-famous flame war with Linus Torvalds, few of his biases come through in the book. Also, he's a pretty decent writer, and the book is actually entertaining.
Operating Systems Implementation Prentice Software
This book is written by Tanenbaum, the main guy behind Minix, which is what Linux was based on. It provides good overviews for basic OS concepts like memory management, file systems, processes, etc. The concepts in this book book are intimately tied to examples of the Minix OS, which is a good thing.
I think you should start by something like that.
Similar threads on this very site:
OS Development
Building a new operating system
How to get started in operating system development
Operating System Concepts is the book we used at University. It's quite ugly BUT the information inside are well explain (from basic memory management, to how to OS decide what to execute or how to avoid deadlock). Pretty wide.
Os dev website is rich in information if you want to start coding your own OS too,
While old, these books are very good:
Operating System Design with Xinu
http://ecx.images-amazon.com/images/I/51AVJFBS3EL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU01_.jpg
Operating System Design-Internetworking With XINU, Vol. II
3: http://Operating System Design-Internetworking With XINU, Vol. II
Take a look at HelenOS, which is a from scratch microkernel based OS that aims to be a fully modern OS. Disclamer, I'm a contributor, I'm working on its shell from scratch.
HelenOS has been ported to ia32/64, SPARC, ARM and more, its very well designed and easy to read. Its still in its infancy but shows one possible design that really takes advantage of the microkernel design and solves many issues in a microkernel implementation (such as IPC).
It also includes scripts that automatically set up a proper tool chain needed for cross compiling. Its very easy to build and runs very well in most simulators (i.e. QEMU) or bare metal.
I would also study L4, Minix3 and the GNU HURD (based on Mach), the latter being an illustration of design pitfalls when trying to leverage a microkernel.
If you want to go the monolithic route, just study Linux.
I'd highly recommend taking a look at the MIT Operating Systems class. It's got lots of useful references, and a bunch of lab exercises which you can play around with (including automated grading scripts, so you don't have to be an MIT student to do them).
textbook http://ecx.images-amazon.com/images/I/411E3CQQYZL._SS500_.jpg
I used Operating Systems and Middleware: Supporting Controlled Interaction when I was in college. It is probably one of the best textbooks on the subject.
Operating Systems Design and Implementation
The design and implementation of the FreeBSD OS
Just off the top of my head.
Developing Your Own 32-Bit Operating System by Richard A. Burgess. Went into great details about boot loaders, setting up those strange memory and process management registers, etc. It was a great read back in 1996 when i thought i'd take a crack at writing a simple OS from scratch, but may be dated by now, dealing only with the first few generations of Pentium-class CPUs.
If I remember correctly, the Powerup to Bash Prompt HOWTO contained a lot of information that looked like it would be useful for this. So did older versions of the Linux From Scratch HOWTO, but in recent versions that has been removed.
You'll also find a lot of good information in Understanding the Linux Kernel.
I would recommend looking at embedded operating systems and building an embedded OS. It will deal with the core concepts without the overhead of a modern desktop CPU.
I wrote a multitasking embedded OS last spring as a final project, it's easier than you might think.
You should look into MINIX 3. This is an operating system that was written in, I believe, less than 10,000 lines. You can get a very good idea of how an OS works with the aid of one of Tanenbaum's books and understanding how MINIX 3 works. You could go straight to Linux, but I think this is a useful task and really helps you see how it really doesn't take that many lines to build a working OS.
http://www.minix3.org/
Apart from books, there are many sites that learn OS Development
BrokenThorn Entertainment is on of this website that learn OS dev from base

Developing addins for World of Warcraft - Getting started? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
As a long time World of Warcraft player, and a passionate developer I have decided that I would like to combine the two and set about developing some addins. Not only to improve my gameplay experience but as a great opportunity to learn something new.
Does anyone have any advice on how to go about starting out?
Is there an IDE one can use? How does one go about testing? Are there any ready made libraries available? Or would I get a better learning experience by ignoring the libraries and building from scratch? How do I oneshot Hogger?
Would love to hear your advice, experiences and views.
This article explains how to start pretty well.
Your first bookmark is possibly the US Interface Forum, especially the Stickies for that:
http://us.battle.net/wow/en/forum/1011693/
Then, grab some simple addons to learn how XML and LUA interacts. The WoWWiki HOWTO List is a good point here as well.
One important thing to keep in mind: World of Warcraft is available in many languages. If you have a EU Account, you got an excellent testing bed by simply downloading the language Packs for Spanish, German and French. If you're an US Guy, check if you can get the Latin America version. That way, you can test it against another language version.
Once you made 1 or 2 really small and simple addons just to learn how to use it, have a look at the various frameworks. WowAce is a popular one, but there are others.
Just keep one thing in mind: Making an Addon is work. Maintaining one is even more work. With each new Patch, there may be breaking changes, and the next Addon will surely cause a big Exodus of Addons, just like Patch 2.0.1 did.
Another useful tools you might like is WarcraftAddOnStudio which lets you make plugins in the visual studio environment.
I learned the art of add-ons primarily by looking at the code of Blizzard's UI. You can see that code by extracting the default UI or finding a copy of the default UI online. Add-on developers sometimes like to over-engineer their pet projects (who doesn't?), while Blizzard's code is usually pretty no-nonsense and straightforward. In addition, Programming in Lua is a pretty useful (if slightly out-of-date) reference for the actual Lua language.
The best way to start is with the book World of Warcraft Programming. It covers LUA, XML, WarcraftAddOnStudio and the WoW API. The book also has sections on best practices and avoiding common mistakes.